Набор скриптов для знакомства с SQL Server

30.09.19

База данных - HighLoad оптимизация

Поговорим о скриптах, которые помогут быстро ознакомиться с состоянием SQL Server, в том числе с вопросами производительности.

С чего все начинается

В одной из прошлых статей мы рассматривали вопросы мониторинга SQL Server в контексте работы с платформой 1С. И это правильно, ведь мониторинг СУБД является залогом стабильной работы информационной системы и всей компании.

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

Сегодня мы рассмотрим подобные вопросы. Начнем знакомство с сервером с помощью простых запросов, а остановимся на примерах поинтереснее.

Скриптов достаточно?

Думаете, что все возникающие вопросы с СУБД можно решить скриптами? Многие вопросы, но точно не все!

Например, полноценный мониторинг сервера и сбор счетчиков производительности средствами СУБД точно не реализовать, ведь данные нужно не просто собирать, но и обрабатывать, компоновать, визуализировать и, в конечном, счете как-то интерпретировать.

Конечно, SQL Server может решить все перечисленные задачи, ведь даже счетчики производительности операционной системы с его помощью можно собирать! Но это не всегда возможно, ведь тогда надо держать его установленным на всех серверах, даже которые к СУБД не относятся. А про сопровождение такого решения я вообще молчу.

Поэтому сделаю важное уточнение - с помощью предлагаемого набора скриптов решить все задачи с настройкой и мониторингом СУБД невозможно! А вот получить первое представление о ее состоянии, и поверхностную информацию о проблемах - самое то!

Ближе к делу

Меньше слов - больше T-SQL скриптов!

Знакомимся с сервером

На первом этапе всегда было бы полезно узнать следующую информацию. 

 
 Базовая информация о сервере
 
 Время работы с момента запуска
 
 Количество активных соединений

После этого мы можем двигаться дальше.

Псс, бэкапы есть?

Второй вопрос - что там у Вас с резервным копированием.

 
 Информация о бэкапах

Резервное бэкапирование не настроено? Тогда пора заняться этим как можно скорее.

Груз баз данных

Базы бывают разные: маленькие, средние, большие, а также неизвестного размера :) Последняя категория - самая страшная, ведь неизвестность не принесет ничего хорошего. Давайте же узнаем с чем мы имеем дело.

 
 Список баз

Сам по себе список баз даст мало полезного. Давайте посмотрим что там с их размером.

 
 Размер баз

Еще может возникнуть вопрос где же эти базы хранятся.

 
 Расположение файлов баз данных

Но что скрывается за этими общими цифрами?

 
 Размеры таблиц

Отлично, теперь мы уже имеем представление о сервере, резервном копировании и базах данных, которые здесь находятся. Можно перейти к вопросам эффективности работы СУБД.

Что там с индексами

Состояние индексов и их правильное построение в базе - залог эффективной работы запросов и приемлемого быстродействия. Проведем исследование индексов в базах данных.

 
 Список индексов

Теперь можно посмотреть какие индексы полезные.

 
 Статистика использования индексов

Что ж, информация об использовании индексов у нас есть. Мы можем понять какие индексы избыточны и что-то с ними сделать. Но чаще всего проблема вовсе не в избыточности индексов, а в их недостаточности.

 
 Отсутствующие индексы

Еще одним важным показателем состояния индексов является процент фрагментации.

 
 Проверка фрагментации индексов

Вы знаете, что делать с индексами дальше!

Статистику бы проверить

С индексами разобрались, но для их корректной работы очень важно состояние статистики базы данных.

 
 Состояние статистики

Нашли проблему в обслуживании? Обслужите статистику!

Производительность - наше все!

На финал оставим скрипты для диагностики производительности. На самом деле очень много различных подходов для анализа проблем производительности. Как было сказано в начале статьи, только скриптами не всегда удается найти причину проблем и нужен полноценный мониторинг. Но общее направление для расследования понять точно можно.

 
 Ожидания

Далее можно посмотреть на статистику использования процессорных ресурсов и дисковой подсистемы по базам.

 
 Использование CPU и дисков по базам

Дальнейшее расследование и действия сильно зависит от полученной информации на данном этапе. Далее можно:

  1. Настроить мониторинг SQL Server'а (как внутренних показателей СУБД, так и счетчиков производительности).
  2. С помощью отчета "Просмотр и анализ структуры базы данных (отчет на СКД)" на платформе 1С анализировать информацию о базе данных в привычном виде.

И думать, работать дальше :)

Пока что все

В статье нет готового рецепта для решения всех проблем. Лишь скрипты. Скрипты для начала знакомства с сервером СУБД, получения узкой информации и получения сведений о потенциальных проблемах.

Дальше все зависит только от Вас!

"А как же PostgreSQL?!", - спросите Вы. Сейчас это "хайповая" СУБД, и возможно она станет на первое место по использованию в будущем. Думаю, мы обратимся к ней в следующих публикациях. Жаль, что ее инструменты диагностики не такие развитые как у SQL Server, но все ведь может поменяться.

До скорых встреч и хорошего настроения!

Другие ссылки

Вступайте в нашу телеграмм-группу Инфостарт

SQL Server диагностика стабильность производительность мониторинг расследование

См. также

HighLoad оптимизация Программист 1С:Предприятие 8 1C:ERP Бесплатно (free)

Приведем примеры использования различных в динамических списках и посмотрим, почему это плохо.

18.02.2025    8907    ivanov660    39    

61

HighLoad оптимизация Технологический журнал Системный администратор Программист Бесплатно (free)

Обсудим поиск и разбор причин длительных серверных вызовов CALL, SCALL.

24.06.2024    11348    ivanov660    13    

64

Администрирование СУБД 1С:Предприятие 8 1C:Бухгалтерия Россия Бесплатно (free)

При хранении файлов в томах на диске они иногда исчезают. Разбираемся, почему.

23.05.2024    18154    human_new    22    

60

HighLoad оптимизация Программист 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

Анализ простого плана запроса. Оптимизация нагрузки на ЦП сервера СУБД используя типовые индексы.

13.03.2024    8657    spyke    29    

54

HighLoad оптимизация Инструменты администратора БД Системный администратор Программист 1С 8.3 Абонемент ($m)

Обработка для простого и удобного анализа настроек, нагрузки и проблем с SQL сервером с упором на использование оного для 1С. Анализ текущих запросов на sql, ожиданий, конвертация запроса в 1С и рекомендации, где может тормозить.

5 стартмани

15.02.2024    20482    359    ZAOSTG    106    

125

Администрирование СУБД Системный администратор Программист Бесплатно (free)

Казалось бы, базовое знание: «индексы надо обслуживать, чтобы запросы выполнялись быстро». Но обслуживание индексов выполняется долго и может мешать работе пользователей. Кроме того, в последнее время популярны разговоры о том, что индексы можно вообще не обслуживать – насколько это оправданно? Рассмотрим: на что влияет обслуживание индексов, когда надо и когда не надо его выполнять, и если надо – как это сделать так, чтобы никому не помешать?

16.01.2024    27987    Филин    17    

59
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
5. 3vs 01.10.19 06:47 Сейчас в теме
Юрий, спасибо за статью!

Слушал тут письма Паисия святогорца, глубокую мысль толкнул святой человек: "Лень в молодости - бедность в старости!"
Каково!

Про меня написал! :-)
mnbvcxz10; sogesti; YPermitin; +3 Ответить
6. пользователь 01.10.19 07:08
(5) Не думаю, что бедность в старости может быть исправлена отсутствием лени. :)
Особенно в текущей ситуации ))))
ef42; Vint88; mnbvcxz10; user1264331; RickyTickyTok; Сто27001; Serg O.; +7 Ответить
7. 3vs 01.10.19 07:13 Сейчас в теме
(6)Тут какая глубина - "учись, дурак, в молодости, пока не поздно, в старости будешь пожинать плоды своей ленности"!

Вы, вот, не ленились, результат на лицо! :-)
18. user-z99999 77 28.11.19 14:45 Сейчас в теме
(6)
Подскажите как интерпретировать результат CPU и диски по базе?
Какие значения - ок, а какие - нет.
Прикрепленные файлы:
8. d_iar 01.10.19 11:24 Сейчас в теме
Все это можно посмотреть без ваших скриптов, запросов, все это есть в интерфейсе сервера, очень похоже на то как люди "привыкшие "к dos очевидные простейшие задачи в виндовс 95 и старше делали в cmd.. Бесполезная статья с многобещающим названием к сожалению
alexeyvs77; YPermitin; +2 Ответить
9. пользователь 01.10.19 11:25
(8) спасибо, рад стараться. Интерфейсные настройки всегда лучше.

(На самом деле нет)
user1264331; xsnort; sem4ik13; +3 Ответить
12. sem4ik13 02.10.19 06:01 Сейчас в теме
(8) Не суди и судим не будешь. В интерфейсе сервера заложены дефолт отчеты и прочее, а скрипты позволяют в разы быстрее и детальнее получить нужную информацию - ничто тебе не мешает просто взять любой скрипт и видоизменить под свои какие-то конкретные задачи. Лично пользовался стандартными инструментами msqlms, и они предназначены в целом для новичков, кто понятия не имеет о внутреннем устройстве СУБД, и видит только верхушку айсберга.
В итоге получается что для подтверждения твоих слов у тебя только 2 варианта - написать свою статью "не"бесполезную"", либо принять суровые риали дилетанта.
P.S. Умение пользоваться cmd даст тебе персональный буст навыков, и тут дело не в возрасте, а в навыке
P.S.S. Пользование интерфейсными настройками - повестись на "красивые" кнопочки и картиночки, а не работать с реальными данными.
klaus38; mnbvcxz10; papche; xsnort; YPermitin; +5 Ответить
13. oleg-x 23 02.10.19 13:30 Сейчас в теме
(12) (8) Особенно скрипты позволяют автоматически собирать и отправлять нужную информацию, например если место на диске заполнилось.
А не сидеть и мониторить, а не съела ли база все место на диске.
YPermitin; +1 Ответить
14. пользователь 02.10.19 13:31
(13) плюс ко всему добавлю, что только скриптами можно получать информацию из десятка серверов, отправляя скрипт через PowerShell например.

А использовать GUI SSMS для такого - это ад просто.
Shmell; acanta; +2 Ответить
10. BackinSoda 01.10.19 12:22 Сейчас в теме
"И думать, работать дальше " - эх, вот по этой теме бы тоже статейку :)
YPermitin; +1 Ответить
11. пользователь 01.10.19 16:02
(10) а об этом Вы узнаете после рекламы :)))
RickyTickyTok; BackinSoda; sem4ik13; acanta; +4 Ответить
15. letarch 29.10.19 15:45 Сейчас в теме
теперь давайте версию статьи для postgres
YPermitin; +1 Ответить
16. пользователь 29.10.19 16:27
(15) будет время - будет статья :)
17. пользователь 06.11.19 06:03
19. nonofusafree 03.09.20 19:25 Сейчас в теме
20. akR00b 25 05.02.21 09:36 Сейчас в теме
Для отправки сообщения требуется регистрация/авторизация