Большие отчеты
Добавлено: 24 ноя 2010, 05:09
Здравствуйте
Часто приходится сталкиваться с очень большими отчетами.
Зачастую они используются фактически как средство экспорта данных из БД в Excel.
В данном случае сама идея кривая, но изменить ничего нельзя, так как отчеты переходят из старых систем и все нужно повторить один в один.
Все получается прекрасно, кроме одного - производительность и ресурсоемкость при генерации большого количества страниц.
Простая таблица (заголовок отчета, один датабэнд, подвал отчета) на несколько сетен страниц формируется в разы медленнее и использует в разы больше ресурсов чем в некоторых других генераторах.
А такой отчет на 800-1000 страниц сформировать вообще не получается...
Сейчас делаю такой отчет.
Количество строк в источнике: 37000
Количество страниц в отчете: 1000
Кеширование отчета включено.
Результат:
Время формирования - 75 сек (доступ к данным + генерация) + 25 сек (отображение в предпросмотре) = 100 сек
Использование памяти - 1,4 Гб.
Это на грани фола... Даже ошибка вылезла, хотя отчет сформировался нормально.
"System.ComponentModel.Win32Exception: Not enough storage is available to process this command"
В тех же условиях результаты Фастрепорта:
Время формирования - 50 сек
Использование памяти - 440 Гб.
Win 7 32bit, 4 Gb RAM, процессор 4 ядра.
Посоветуйте как оптимизировать такие отчеты?
Может можно какой-то "облегченный" режим в генератор добавить...
Спасибо.
Часто приходится сталкиваться с очень большими отчетами.
Зачастую они используются фактически как средство экспорта данных из БД в Excel.
В данном случае сама идея кривая, но изменить ничего нельзя, так как отчеты переходят из старых систем и все нужно повторить один в один.
Все получается прекрасно, кроме одного - производительность и ресурсоемкость при генерации большого количества страниц.
Простая таблица (заголовок отчета, один датабэнд, подвал отчета) на несколько сетен страниц формируется в разы медленнее и использует в разы больше ресурсов чем в некоторых других генераторах.
А такой отчет на 800-1000 страниц сформировать вообще не получается...
Сейчас делаю такой отчет.
Количество строк в источнике: 37000
Количество страниц в отчете: 1000
Кеширование отчета включено.
Результат:
Время формирования - 75 сек (доступ к данным + генерация) + 25 сек (отображение в предпросмотре) = 100 сек
Использование памяти - 1,4 Гб.
Это на грани фола... Даже ошибка вылезла, хотя отчет сформировался нормально.
"System.ComponentModel.Win32Exception: Not enough storage is available to process this command"
В тех же условиях результаты Фастрепорта:
Время формирования - 50 сек
Использование памяти - 440 Гб.
Win 7 32bit, 4 Gb RAM, процессор 4 ядра.
Посоветуйте как оптимизировать такие отчеты?
Может можно какой-то "облегченный" режим в генератор добавить...
Спасибо.