Набор скриптов для знакомства с 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 диагностика стабильность производительность мониторинг расследование

См. также

INFOSTART TECH EVENT 2023, 11-13 октября, Санкт-Петербург

Инструментарий разработчика Мобильная разработка DevOps и автоматизация разработки Администрирование СУБД Мероприятия Россия Платные (руб)

XIII конференция по управлению и технологиям автоматизации учета на платформе 1С:Предприятие, которая пройдет в Санкт-Петербурге и соберет 1500 участников из разных регионов России и мира.

5100 руб.

09.12.2022    30068    11    0    

433

«Монитор» – простой анализ производительности

Администрирование СУБД Технологический журнал Бесплатно (free)

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

21.09.2023    3208    Andreynikus    12    

68

MS SQL Server: изучаем планы запросов

Запросы HighLoad оптимизация Запросы Бесплатно (free)

Многие знают, что для ускорения работы запроса нужно «изучить план». При этом сам план обычно обескураживает: куча разноцветных иконок и стрелочек; ничего не понятно, но очень интересно! Аналитик производительности Александр Денисов на конференции Infostart Event 2021 Moscow Premiere рассказал, как выполняется план запроса и что нужно сделать, чтобы с его помощью находить проблемы производительности.

20.06.2023    7730    Филин    37    

92

Тонкости эксплуатации PostgreSQL

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

Тема перехода с MS SQL на PostgreSQL становится все актуальнее. В докладе на конференции Infostart Event 2022 Saint Petersburg руководитель проектов Антон Дорошкевич рассказал, что ждёт после перехода, к чему нужно быть готовым, и какие варианты решения задач существуют на данный момент в мире PostgreSQL для его успешной эксплуатации.

19.06.2023    4371    a.doroshkevich    32    

52

tempdb, почему она всё время растет?

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

С проблемами распухания tempdb при работе с базой данных 1С регулярно сталкиваются и админы, и разработчики. О том, как мониторить, диагностировать и решать такие проблемы, на конференции Infostart Event 2021 Moscow Premiere рассказал Александр Криулин.

14.06.2023    7296    AlexKriulin    8    

78

Первый день архитектора 1С на новой работе

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

Как быстро познакомиться с системой на новой работе или если вас пригласили провести аудит контура на 1С? О том, какие инструменты использовать для быстрой проверки настроек сервера 1С, сервера MS SQL и общей оценки инфраструктуры на производительность, на конференции Infostart Event 2021 Post-Apocalypse рассказал архитектор 1С Юрий Былинкин.

01.06.2023    9140    ardn    18    

72

Разворачиваем 1С:Шину на Ubuntu и Windows [Шпаргалка]

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

Пошаговая инструкция по инсталляции и обновлению 1С: Шины на Ubuntu и краткая на Windows Server. Проблемы и их обходы присутствуют.

02.05.2023    4892    dsdred    20    

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

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

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

Вы, вот, не ленились, результат на лицо! :-)
18. user-z99999 65 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 26 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
(15) А вот и PostgreSQL пришел :)

https://infostart.ru/public/1148863/
19. nonofusafree 03.09.20 19:25 Сейчас в теме
(0) очень выручил
20. akR00b 22 05.02.21 09:36 Сейчас в теме
СпасибО!
Оставьте свое сообщение