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

Презентация:



Advertisements
Похожие презентации
ACCESS Перекрестные запросы. Перекрестные запросы делают тоже самое, что и запросы с вычислением и группировкой, но в структуре, облегчающей их анализ.
Advertisements

SQL Server + RP Server Платформа для сверхбыстрой разработки SQL-приложений Владимир Авсеев Главный конструктор, Реляционное программирование.
Презентация на тему: «СУБД Access. Понятие запроса» Выполнила: Часовских Екатерина студентка 1 курса отделения финансы и кредит.
Silverlight 5. Что нового? Сергей Пугачёв Microsoft Silverlight
Объединение таблиц Подзапросы. Оператор SELECT дает возможность выборки информации сразу из нескольких таблиц, которые перечислены в списке FROM. Такая.
Report-Driven Design Революционный подход к созданию бизнес-приложений! Алексей Акимов компания Developer Express.
«ИЗМЕНЕНИЕ ДАННЫХ В БД» Выполнил: студент 722 группы Специальности Информационные системы (по отрослям) Токарев Виктор.
Тема 6. Технология разработки реляционной модели данных Вопросы 1.Объекты реляционных БД, терминология 2.Разработка структуры БД 3.Нормализация отношений.
Андрей Слепицкий Архитектор бизнес-решений Microsoft AR210.
СУБД Microsoft Access 2003 Элементы языка SQL. Язык SQL SQL (Structured Query Language) – структурированный язык запросов Язык SQL применяется во многих.
СУБД 5. SQL для выборки данных. 2 SELECT Обработка элементов оператора SELECT выполняется в следующей последовательности: FROM – определяются имена используемых.
Язык QBE Язык QBE -общая характеристика Табличный двумерный язык, основанный на реляционном исчислении. Декларативный язык. Язык четвертого поколения (4.
Автор : Саверский Владислав Олегович Руководитель : Минченко Михаил Михайлович ГБОУ ЛИТ 1537.
1.Доступ к словарю базы данных 1.v$ 2.dba_ 3.all_ 4.user_ 2.Просмотр системных view cистемные view - dict (dictionary) столбцы системных view – dict_columns.
1 Лекция 6 Команды категории извлечения данных языка структурированных запросов SQL План лекции Выборка определенных столбцов таблицы Устранение избыточных.
Санкт-Петербургский Государственный Университет Математико-механический факультет Кафедра системного программирования Научный руководитель: Б.А. Новиков.
Технология хранения, поиска и сортировки информации в базах данных
Пример разработки высоконагруженной реляционной базы данных Белоусов Павел.
ПОРТИРОВАНИЕ ОБЛАЧНОГО РЕШЕНИЯ С ORACLE НА POSTGRESQL.
Презентация на тему: Ключевое слово TOP n [PERCENT] [WITH TIES]
Транксрипт:

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

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

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

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

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

Логические чтения IDName 1Иванов 2Петров 3Сидоров Клиенты Заказы IDClientID

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

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

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

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

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

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

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

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

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

Вопросы DB804 Дмитрий Костылев начальник отдела разработки системного ПО Вы сможете задать вопросы докладчику в зоне «Спроси эксперта» в течение часа после завершения этого доклада