У нас есть продукт, который работает на Sql Server Express 2005 и использует в основном ASP.NET. База данных насчитывает около 200 таблиц, из которых несколько (4 или 5) могут расти от 300 до 5000 строк в день и сохранять историю 5 лет, поэтому их можно увеличить до 10 миллионов строк.
Мы создали платформу отчетности, которая позволяет клиентам создавать отчеты на основе шаблонов, полей и фильтров.
Мы сталкиваемся с проблемами производительности почти с самого начала, мы стараемся, чтобы отчеты отображались не более 10 секунд, но некоторые из них работают до 25 секунд (особенно для клиентов с большой историей).
Мы продолжаем проверять индексы и пытаемся улучшить запросы, но у нас возникает ощущение, что мы можем сделать очень много. Конечно, тот факт, что запросы генерируются динамически, не помогает в оптимизации. Мы также добавили несколько таблиц, в которых хранятся избыточные данные, но затем у нас возникла дополнительная проблема поддержания этих данных в актуальном состоянии, а также Sql Express имеет ограничение на размер баз данных.
Сейчас мы сталкиваемся с тем, что нам нужно решить, хотим ли мы отказаться от отчетов в реальном времени или, возможно, сократить историю, чтобы иметь более высокую производительность.
Я хотел бы спросить, каков рекомендуемый подход для систем такого типа.
Кроме того, мы должны начать искать сторонние инструменты / платформы? Я знаю, что OLAP может быть вариантом, но можем ли мы заставить его работать на Sql Server Express или, по крайней мере, с лицензией, достаточно дешевой для распространения в тысячах развертываний?
Спасибо