Повышение производительности приложения путем добавления индексов в базу данных.
У меня есть старое веб-приложение с большим количеством устаревшего кода, и мне нужно повысить производительность для некоторых отчетов. Я хочу избежать переписывания отчетов, потому что это стандартное унаследованное приложение, которое сложно поддерживать, тестировать и разрабатывать. Поэтому я пытаюсь ускорить эти отчеты, добавив индексы для запросов отчетов в MSSQL (2008). Отчеты выполняют около 3-4 тыс. Запросов.
Ниже мой план улучшения:
1. Очистите буферы MSSQL, запустив
DBCC DROPCLEANBUFFERS
DBCC FREEPROCCACHE
DBCC DROPCLEANBUFFERS
2. Запустите MSSQL profiler, а затем выполните отчет.
3. Соберите все запросы отчета и затем экспортируйте их в MSSQL.
4. Рассчитайте сумму продолжительности.
5. Группируйте запросы поtextdata
и заказать их поsum(duration) desc
.
6. Выполните запросы из экспорта профилировщика и добавьте индексы, которые рекомендованы MSSQL Management Studio.
7. Повторите шаги с 1 по 6 и сравните результаты.
У меня есть интересные результаты. Когда я улучшаю производительность отчета № 1, производительность отчета № 2 уменьшается. Также иногда после добавления индексов производительность снижается в десять раз.
Мои вопросы:
1. Является ли хорошей идеей повысить производительность приложений за счет повышения производительности SQL-запросов?
2. Можно ли улучшить производительность отчетов, которые выполняют 3-4 тыс. Запросов SQL, добавив индексы?