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

См. также

Куда же деваются файлы из 1С

Администрирование СУБД Платформа 1С v8.3 Конфигурации 1cv8 Россия Бесплатно (free)

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

23.05.2024    7630    human_new    18    

53

Анализируем SQL сервер глазами 1С-ника

HighLoad оптимизация Инструменты администратора БД Системный администратор Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

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

1 стартмани

15.02.2024    9303    186    ZAOSTG    74    

105

Удаление строк из таблицы значений различными способами с замером производительности

HighLoad оптимизация Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Встал вопрос: как быстро удалить строки из ТЗ? Рассмотрел пять вариантов реализации этой задачи. Сравнил их друг с другом на разных объёмах данных с разным процентом удаляемых строк. Также сравнил с выгрузкой с отбором по структуре.

09.01.2024    7984    doom2good    49    

67

Опыт оптимизации 1С на PostgreSQL

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

При переводе типовой конфигурации 1C ERP/УТ/КА на PostgreSQL придется вложить ресурсы в доработку и оптимизацию запросов. Расскажем, на что обратить внимание при потерях производительности и какие инструменты/подходы помогут расследовать проблемы после перехода.

20.11.2023    10479    ivanov660    6    

78

ТОП проблем/задач у владельцев КОРП лицензий 1С на основе опыта РКЛ

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

Казалось бы, КОРП-системы должны быть устойчивы, быстры и надёжны. Но, работая в рамках РКЛ, мы видим немного другую картину. Об основных болевых точках КОРП-систем и подходах к их решению пойдет речь в статье.

15.11.2023    5761    a.doroshkevich    20    

73

Мигрируем с MS SQL на PostgreSQL

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

Переход с MS SQL на PostgreSQL сопряжен с рисками для бизнеса и неизбежно вызывает множество вопросов. Статья посвящена тому, как заранее подготовиться к предстоящей миграции, провести нагрузочное тестирование, выявить возможные проблемы перехода и провести необходимую оптимизацию.

13.11.2023    13121    ivanov660    31    

74

Неочевидный баг Истории данных, убивающий rphost

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

Расследование о том, почему команда ИсторияДанных.ОбновитьИсторию() убивала rphost.

08.11.2023    6809    dsdred    48    

72
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
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 68 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 27 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 22 05.02.21 09:36 Сейчас в теме
Оставьте свое сообщение