|
Решение проблем с запросами в Microsoft SQL Server
[править] Для кого статья?Для технических специалистов, программистов и веб-мастеров. Первоначально рекомендуется ознакомится со статьёй базы знаний хостинга проблема медленных SQL запросов – в статье основной упор делается на mySQL, но даётся ряд базовых знаний, верных и для Microsoft SQL Server. Далее по тексту предполагается, что вы с указанной статьёй знакомы. [править] Верхний пределХостинг 1Gb.ru предлагает услугу Microsoft SQL Server в рамках виртуального (shared, разделяемого) хостинга. Это означает, что на одном сервере находятся ресурсы множества клиентов и они не должны мешать друг другу. Специфика сайтов и сопутствующих служб запускаемых на виртуальном хостинге в том, что они не должны рассчитывать на монопольное использование ресурсами сервера хостинга. Если ваш проект оперирует большим объёмом данных и требует для этого больших ресурсов (к примеру, он постоянно читает и пишет большие блоки данных на диск и на это время фактически захватывая его под свои нужды вытесняя другие задачи) – он не предназначен для виртуального хостинга. Если для стабильной работы сайта требуется большой объём памяти для удержания в ней (кэширования) какой-то информации – сайт не предназначен для виртуального хостинга. Если есть любые другие попытки длительного монопольного владения всеми или ключевыми ресурсами сервера и нет расчёта на то, что кроме вашей задачи на сервере исполняются сотни и тысячи других равноправных задач – проект не предназначен для виртуального хостинга. В этом случае, попытка размещения проекта на виртуальном хостинге является ошибкой ответственных за проект лиц. Если, вдруг, это ваша ситуация – вам не повезло, решить эту проблему на виртуальном хостинге нельзя и дальше можно не читать: вам нужны услуги выделенного сервера либо мощной VDS, где ваш сайт сможет использовать все выделенные доступные ресурсы и работать эффективно. [править] ЦифрыДля каждого запроса к БД вычисляются параметры исполнения, если они малы и не могут являться источником излишней нагрузки на сервер баз данных то они игнорируются. В противном случае запросы сохраняются и могут быть проанализированы. На основании анализа может быть вынесено решение об предупреждении либо остановки аккаунта хостинга, базы данных либо её частей. [править] Кто меряетMicrosoft SQL Server имеет встроенную систему трассировки исполняемых запросов, используя которую можно получать данные об исполняемых запросах и процессах внутри SQL Server. Создавать новые трассировки можно как программно, используя соответствующие хранимые процедуры (начать стоит с sp_trace_create) так и при помощи инструментов идущих в комплекте с SQL Server – SQL Server Profiler. Profiler используя систему трассировок позволяет отслеживать и записывать в лог запросы удовлетворяющие некоторым параметрам а также характеристики их исполнения. Система мониторинга Microsoft SQL Server на 1Gb.ru использует систему трассировок программно, минуя профайлер – это позволяет более эффективно отслеживать запросы и не зависеть от внешних процессов. Если вы являетесь программистом и хотите отлаживать или отслеживать запросы на локальном сервере – следует использовать Profiler. Использовать систему трассировки на серверах хостинга не получится – для этого у клиентов хостинга нет достаточных прав. [править] Что меряетсяС целью контроля нагрузки от исполнения запросов для каждого запроса записываются следующие параметры исполнения:
Также для лучшего понимания сути происходящего для запроса собираются следующие данные:
* - только для версии 2005 и выше [править] А что же цифры?Ключевыми параметрами являются Reads и CPU: Reads свидетельствует о потреблении дисковой подсистемы (количество операций чтения с диска) и потреблении памяти (количество операций чтения не с диска), CPU свидетельствует о потреблении ЦПУ сервера. Чем больше характеристики, тем хуже. При достижении некоторой критической точки становится совсем плохо и работа базы начинает влиять на общую производительность сервера свыше тех лимитов, которые ей предоставлены тарифным планом и регламентом хостинга. Считается, что хорошими показателями исполнения запросов являются следующие числа:
[править] В договоре нет этих цифр!Да, верно. Цифры из предыдущего раздела являются разумным ориентиром. Контроль нагрузки запросов основывается на ряде статей регламента хостинга – 1.4.d, 2.3.a, 2.3.b, 2.3.d, 2.3.e [править] А где это смотреть?В полном списке функций личного кабинета по ссылке "Медленные SQL запросы (MSSQL)". [править] Сценарии решения проблемных запросовВ зависимости от того, являетесь ли вы разработчиком скриптов и БД или нет – существует несколько вариантов решения проблем. [править] Можно оставить как есть?Нет, нельзя. Мы не можем продолжать обслуживание БД, которая является источником проблем производительности сервера. Если оставить как есть - база данных будет остановлена и сайт работать не будет. Представьте себя на другой стороне - вы клиент хостинга, используете БД MSSQL, все ваши запросы отлажены и великолепно работают. Однако ваш сайт "тормозит" из-за того, что соседний клиент развернул проект не предназначенный для виртуального хостинга или содержащий грубые ошибки программирования. Что будет вашим первым, вторим или третьим желанием? Наша конечная цель в том, что бы таких желаний не возникало и у всех всё работало прекрасно. Поэтому мы вынуждены вмешиваться в работу проектов с проблемами вплоть до отказа в услугах хостинга. [править] CMSЕсли вы используете CMS для которой требуется поддержка СУБД Microsoft SQL Server и у вас нет возможности исправлять код CMS. Рекомендуем вам выполнить следующие пункты:
Мы также можем предложить несколько статей по решению проблем CMS исходя из своего опыта и из опыта наших клиентов: [править] Собственная разработкаЕсли БД и скрипты являются плодом вашей собственной разработки, то вам следует оптимизировать работу скриптов и БД. Для проведения работ по оптимизации работы базы данных – сделайте бэкап БД, скачайте его на локальный компьютер и разверните локально. Все работы и тесты производите с локальной БД, так как они тоже могут вызывать излишнюю нагрузку и являться основанием для блокировки аккаунта по перегрузке. Используйте Profiler в сочитании со средством выполнения запросов и просмотра Execution Plan. Выпишите все типы запросов, которые могут встретится на сайте и примените пункты (ниже) для каждого типа запросов. Посмотрите статьи по оптимизации производительности MSSQL, например, тут - http://www.sql.ru/articles/articles.aspx?g=MSSQLServer В общем виде, следуйте следующим лёгким правилам:
[править] Ссылки по теме
|
|





