1 / 18

Оптимизация запросов в Microsoft SQL Server

Оптимизация запросов в Microsoft SQL Server. Дмитрий Костылев Начальник отдела разработки системного ПО ОАО « Нордеа Банк » SQL Server MVP 2009-2011. Содержание. Основные понятия Инструменты, поиск «плохих запросов» Анализ плана выполнения

Télécharger la présentation

Оптимизация запросов в Microsoft SQL Server

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Оптимизация запросов в Microsoft SQL Server Дмитрий Костылев Начальник отдела разработки системного ПООАО «Нордеа Банк» SQL Server MVP 2009-2011

  2. Содержание • Основные понятия • Инструменты, поиск «плохих запросов» • Анализ плана выполнения • Причины снижения производительности • Способы оптимизации запросов • Техника написания "быстрых" запросов • Табличные переменные ивременные таблицы

  3. Основные понятия • Оптимизатор • План выполнения

  4. Пример плана выполнения select* from Client c crossapply( selectCOUNT_BIG(*)as Cnt from Orders o where o.ClientID = c.ID and o.Status='A' ) cn whereStatus='D'

  5. Основные понятия • Оптимизатор • План выполнения • «Процедурный кэш» • Статистика • Рекомпиляция • Логические чтения

  6. Логические чтения Клиенты Заказы

  7. Основные понятия • Оптимизатор • План выполнения • «Процедурный кэш» • Статистика • Рекомпиляция • Логические чтения • Прослушивание параметров

  8. Инструменты • SQL Server Management Studio (SSMS) • Profiler • Динамические системные представления (DMV)

  9. План выполнения запроса • Читаем слева направо и сверху вниз • Поток данных – справа налево и снизу вверх

  10. Причины снижения производительности • Изменились данные • Устарела статистика • Недостаточно ресурсов для поиска лучшего плана выполнения • Процедура запущена с «плохими» параметрами

  11. Способы оптимизации • Изменение структур (создание и изменение индексов и статистик) • Подсказки оптимизатору (hints): • Уровня запроса • Табличные • Типы соединений • Plan Guides • Изменение логики запроса, использование промежуточных наборов • Удаление хинтов

  12. Техника написания быстрых запросов • Все возможные вычисления делать предварительно • Не изменять проиндексированные поля, если по ним желателен поиск • Скажи нет неявным преобразованиям! • Использовать INNER JOIN если только не нужен OUTER • Порядок таблиц в запросе – сначала «меньшие потоки данных» • Универсальные запросы работают всегда одинаково плохо • Борьба с прослушивание параметров

  13. Табличные переменные ивременные таблицы • Разное использование статистики • Для временных таблиц сохраняются все правила «обычных» • По табличным переменным не строится статистика, следствия: • Нет перекомпиляции запросов после изменения данных в таблице • Предполагается, что будет выбираться одна строка за одно обращение к таблице • Можно использовать подсказку recompile

  14. Итоги • Быстродействие конкретных запросов зависит от выбранного оптимизатором плана выполнения • Главным образом на выбор «правильного» плана выполнения влияет статистика • Хорошая оптимизация запроса заключается в том, чтобы оптимизацией занимался сам сервер

  15. Обратная связь Ваше мнение очень важно для нас. Пожалуйста, оцените доклад, заполните анкету и сдайте ее при выходе из зала Спасибо!

  16. Вопросы • DB804 • Дмитрий Костылев • decolores2000@yandex.ru • www.sql.ru/blogs/decolores • начальник отдела разработки системного ПО • Вы сможете задать вопросы докладчику в зоне «Спроси эксперта» в течение часа после завершения этого доклада

More Related