оптимизация производительности Grails - PullRequest
0 голосов
/ 23 января 2012

для приложения, над которым я работаю, я должен создать сводный отчет, в котором приложение должно считывать очень большой объем данных, иногда порядка порядка 100 000 записей из базы данных.Мы находим, что использование grails / hibernate (которое мы используем как defacto ORM для всего приложения) неэффективно.В некоторых случаях даже для запроса результирующего набора размером до 10 000 записей требуется более 1,3 с.Интересно, есть ли какие-либо настройки, которые мне не хватает, или лучше перейти на нативный sql для таких требований.

Просто упомянуть, что таблица очень проста и в ней нет соединений.Единственная причина, по которой я предпочитаю использовать Hibernate в качестве критерия для фильтрации данных, очень динамична и порождает несколько необязательных столбцов.

Ответы [ 2 ]

2 голосов
/ 30 марта 2012

Вы можете проверить эту ссылку.Очень проницательноПарень показывает, как он перешел с загрузки 100K записи с 2 часов до 3 минут.
http://naleid.com/blog/2009/10/01/batch-import-performance-with-grails-and-mysql/

2 голосов
/ 23 января 2012

Запрашиваете ли вы базу данных, чтобы вывести 100 000 записей на средний уровень, чтобы можно было выполнить вычисления для этого отчета?Если ответ «да», я бы рассмотрел хранимую процедуру или представление для этого отчета, чтобы вы могли выполнять вычисления на сервере базы данных и уменьшать объем данных и обработку при создании отчета.

Проверьте своисхема, обеспечивающая наличие индексов для всех столбцов в предложениях WHERE, включая внешние ключи.Получите сгенерированный SQL из Hibernate и в EXPLAIN PLAN, чтобы увидеть, на что тратится время.

Это одна из проблем, с которыми люди сталкиваются в Hibernate: что делать, если сгенерированный SQL недостаточно производительный.Возможно, вам придется прибегнуть к чему-то другому, например, к прямому JDBC или iBatis, если Hibernate не может выполнить эту работу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...