Очистка кеша планов SQL Server


Повысьте производительность SQL, следуя советам по планированию кеширования, приведенным в выпуске SQL Server Pro за этот месяц. Вот наш регулярный обзор содержания журнала.

SQL Server Pro — это ежемесячный онлайн-журнал, основанный на подписке, в котором есть новости и статьи со всего мира SQL Server. Пункты, выделенные ниже полужирным шрифтом, соответствуют названию статьи в текущем выпуске.

Функция обложки этого месяца посвящена кешу планов SQL Server, это область памяти, в которой хранятся ваши планы запросов, чтобы их можно было повторно использовать, что экономит время и, таким образом, повышает производительность при следующем запуске запроса. К сожалению, кэш планов может содержать запросы, которые использовались только один раз, от них мало пользы, но они занимают место. Код предоставляется для идентификации этих одноразовых кэшированных планов. Параметр базы данных «оптимизировать для специальных рабочих нагрузок», вероятно, стоит установить для каждой базы данных (по умолчанию он отключен), так как это будет кэшировать только те планы, которые используются по крайней мере дважды, тем самым уменьшая раздувание кеша планов.

Статья продолжается с изучения кэшированных планов на предмет подсказок, которые могут позволить вам оптимизировать ваши SQL-запросы. В частности, дается код для идентификации кэшированных планов, у которых отсутствуют индексы, неявные предупреждения о преобразовании, поиск по ключу и операторы поиска по кластеризованному индексу. Точно так же вы можете захотеть изучить мой собственный более общий метод изучения кэшированных планов для получения советов по производительности в разделе «Получение советов по производительности напрямую с SQL Server» — вам понадобится вход в SQL Server Central, чтобы прочитать эту статью, но если вы серьезно насчет SQL Server, вам он понадобится!

Простые запросы, которые различаются только своими буквальными значениями, легко идентифицировать, поскольку им присваивается одно и то же хеш-значение запроса. В статье представлен код для идентификации этих связанных запросов и предлагается переписать их как параметризованные подпрограммы, что опять же уменьшит раздувание кэша планов.

Статья завершается ссылкой на превосходную статью Грега Лоу о планировании кэширования в SQL Server 2008, которая также применима к SQL Server 2012.

В редакционной статье говорится о растущем использовании технологий в памяти для повышения производительности SQL Server. В то время как SQL Server 2012 представил столбчатые индексы (увеличивающие от x10 до x100) для хранилищ данных, SQL Server 2014 пошел дальше с ядром базы данных OLTP в памяти под кодовым названием Hekaton. На это изменение в памяти повлияли многие факторы, в том числе более дешевая память, увеличение количества ядер / процессоров и тот факт, что в последнее время тактовая частота процессора оставалась относительно неизменной.

Hekaton был разработан с использованием конструкции без блокировок, вместо этого, если строка в буфере изменяется, движок создает новую версию строки с меткой времени, и это очень быстро, поскольку все находится в памяти. Еще одно усовершенствование состоит в том, что интерпретируемый код SQL можно скомпилировать в собственный код. К счастью, в SQL Server 2014 есть мастер, который поможет вам определить, какие таблицы преобразовывать в оперативную память, а какие подпрограммы компилировать.

Серия коррупции продолжается регулярными проверками на наличие коррупции. SQL Server включает инструмент DBCC CHECKDB для проверки на наличие повреждений. В этой статье представлено пошаговое руководство по запуску DBCC CHECKDB в качестве запланированного задания агента SQL Server. Рекомендуются несколько очень хороших вариантов, например NO_INFOMSGS для подавления информационных сообщений, которые могут загромождать вывод, также ALL_ERRORMSGS, поскольку по умолчанию выводятся только первые 200 сообщений об ошибках. Я был немного удивлен, что ничего не было сказано о восстановлении резервной копии на непроизводственный сервер и выполнении там проверки (поскольку производственный сервер часто занят).

В «Разделяй и властвуй на Хэллоуин» Ицик Бен-Ган предлагает шаблонное решение проблемы Хэллоуина. Проблема Хэллоуина возникает, когда вы расширяете граф объектов с помощью итеративного шаблона (например, находите сотрудников, принадлежащих менеджеру), но поскольку временные объекты используются для обработки каждого уровня, возможно, что одни и те же данные обрабатываются более одного раза. SQL Server обеспечивает защиту от этого с помощью защиты Хэллоуина, но за это приходится платить. В статье обсуждается, как можно использовать другой шаблон (называемый Divide and Conquer Halloween) для переключения между двумя временными таблицами, чтобы одна и та же таблица не использовалась как для источника, так и для цели, поэтому SQL Server не требует дополнительной защиты / Стоимость. Как всегда, Бен-Ган предоставляет множество полезных примеров SQL, чтобы проиллюстрировать как проблему, так и ее решение.

Питер Хеллер рассказывает об очень полезном решении для самообслуживания бизнес-аналитики, которое он создал для малых и средних предприятий в Power Pivot и Small Data. Хотя крупные предприятия могут воспользоваться преимуществами служб SQL Server Analysis Services (SSAS) для создания, обслуживания и запроса куба OLAP, это невозможно для малого и среднего бизнеса. В статье представлена альтернатива — решение бизнес-аналитики для самообслуживания на стороне клиента. В решении используются Excel и подключаемый модуль Power Pivot, а также используются различные источники данных в качестве входных данных. Я уверен, что этот подход окажется полезным шаблоном для других нужд бизнес-аналитики SMB.

Джен Андервуд обсуждает создание реальных информационных панелей Microsoft BI сегодня. В статье рассматриваются обсуждения и решения, принятые на пути к созданию реальной панели управления бизнес-аналитикой для крупной компании. Это включает в себя как доступное программное обеспечение, так и проблемы безопасности. В приведенном примере данные нельзя было хранить в облаке, и пришлось использовать более старые версии Microsoft Office. Код в статье отсутствует. Эта статья поучительна, потому что она показывает, независимо от того, насколько крупные компании-разработчики программного обеспечения продвигают свои новейшие продукты, компаниям часто необходимо использовать то, что у них есть, и соблюдать ограничения политики безопасности своей компании.

Майкл Оти выделяет новые возможности Visual Studio 2013. К ним относятся:

возвращение к красочной IDE

Определение Peek: всплывающее окно показывает содержимое метода из вызова метода

CodeLens: показывает ссылки и тестовые прогоны для кода, над которым работает

Поддержка приложений Office 365

Как Microsoft допускает такие элементарные ошибки, например: плоская и монохромная IDE для Visual Studio 2012? (Также отсутствует кнопка «Пуск» в Windows 8, лента в Office и т. Д.). Хорошо, что со временем эти проблемы будут исправлены, но было бы намного лучше, если бы они не были устранены изначально. Эта версия Visual Studio выходит менее чем через год после предыдущей версии. Существуют ли какие-либо усовершенствования, которые настолько важны, чтобы гарантировать выпуск новой версии? Я подозреваю, что нет. Кроме того, мне интересно, следует ли журналу SQL Server уделять внимание технологиям, не связанным с базами данных, и если да, то почему бы не сосредоточиться на новых функциях, связанных с базами данных?

В номере этого месяца было довольно много разнообразных подробных статей. Мне особенно нравится продолжающаяся серия о коррупции, но моя любимая статья была о кэше планов, она очень хорошо написана, с хорошими советами, полезным кодом и ссылками для получения дополнительной / более глубокой информации — обязательно поможет улучшить ваш SQL Server.


Добавить комментарий