Microsoft SQL Server — особенности и установка СУБД MS SQL

Мониторинг баз данных MS SQL можно выполнять с помощью агента Zabbix, отправляя данные счетчиков производительности СУБД, но помимо этого существует возможность отслеживать показатели доступности и работоспособности баз и в agentless-конфигурации.

Как работает Application Performance Monitoring?

Корпоративные приложения меняются и становятся многоуровневыми, распределенными между разными серверами или даже континентами, переходя в облака. Поэтому такие сложные распределенные приложения требуют контроля, так как в некоторых компаниях являются основой бизнеса. Как и у любого мониторинга решения APM определяют базовую производительность и принимают это за норму. Далее любые отклонения от неё регистрируются и требуют принятия решения с целью определения причины отклонения в производительности. Таким образов в отличие от решений NPMD (Network Performance Monitoring and Diagnostics), предназначенных для анализа производительности ИТ-инфраструктуры, здесь фокус системы — приложение, ошибки в коде и их влияние на его производительность.

С помощью APM мы можем оценить:

  • состояние физического оборудования;
  • состояние виртуальной машины;
  • состояние виртуальной Java машины;
  • состояние контейнера;
  • поведение самого приложения;
  • состояние вспомогательной инфраструктуры, баз данных, кеши, внешние веб сервисы.

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

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

Следующий шаг — это постоянный мониторинг и сравнение текущей производительности с базовой, чтобы чутко реагировать на отклонения. Например, если ключевые бизнес транзакции, как правило, выполняются в течение 4 секунд в пятницу, а в текущую пятницу — это составляет 8 секунд, то возникает логичный вопрос: «Что случилось?». Далее система мониторинга приложений, проанализировав все внутренние и внешние зависимости, должна определить поведение какого элемента не соответствует норме и в удобном формате сообщить ответственным специалистам. Далее дело за малым — устранить выявленную проблему. Часть проблем через настройки системы могут устраняться автоматически, например, путем выделения дополнительных ресурсов при росте количества пользователей или объема запросов.

Таким образом, мы можем уточнить определение мониторинга производительности приложений APM – это система, которая выполняет:

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

Создаём учетную запись

Чтобы создать учетную запись в Windows: 1. Кликаем правой кнопкой мышки значок «Мой компьютер» на рабочем столе, выбираем из списка пункт «Управление». 2. В открывшемся окне «Управление компьютером» выбираем пункт «локальные пользователи», потом выделяем пункт «пользователи». Окно станет такого вида: 3. Кликаем правой кнопкой мыши на пустое пространство папки либо по названию папки, потом выбираем пункт «новый пользователь», открывается окно: 4. Указываем имя пользователя и пароль, нажимаем «Создать». Лучше всего применять латиницу.

Создаём учетную запись
Создаём учетную запись

Состав курса – или что конкретно вы будете изучать

Занятие 1. APDEX

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

Читайте также:  Код ошибки 0x80070570 при обновлении Windows 10

Оптимизация без регулярных замеров – это работа вслепую.

В данной главе:

  • рассмотрим способы автоматического замера времени различных операций
  • узнаем, как отслеживать и оценивать производительность системы
  • рассмотрим, как узнавать о проблемах со скоростью, не опрашивая пользователей

Видеоуроки:

  • Методика APDEX
  • Внедрение подсистемы в конфигурацию
  • Настройка ключевых операций
  • Замер времени на клиенте. Замер времени на сервере
  • Возможные ошибки при встраивании замера
  • Обработка «Оценка производительности»
  • Использование подсистемы в типовых конфигурациях
  • Недостатки подсистемы. Ошибки
  • Недостатки подсистемы. Исправление ошибок
  • Регистрация в сервисе. Установка. Настройка
  • Автоматический замер времени проведения документов
  • Замер произвольной операции
  • Регистрация текста запроса
  • Замер времени открытия формы
  • Просмотр данных APDEX
  • Динамика APDEX и отчеты сервиса
  • Отправка данных в сервис по почте
  • Недостатки сервиса APDEX
  • Автоматический расчет целевого времени от обратного

Занятие 2. Мониторинг загруженности оборудования

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

В данной главе мы разберем, как можно отслеживать загруженность оборудования для ОС Windows и для Linux и как оценивать собранные данные.

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

Видеоуроки:

  • Мониторинг производительности оборудования
  • Создание счетчиков системного монитора вручную
  • Создание счетчиков с помощью шаблонов
  • Добавление счетчиков с помощью bat-файла
  • Настройка группы сборщиков данных
  • Настройка автозапуска счетчиков после перезагрузки
  • Просмотр и анализ графиков загруженности оборудования
  • Пример анализа графика загруженности оборудования
  • Просмотр дисковой активности
  • Сравнение производительности разных дисков
  • Сравнение производительности 1С в разных условиях
  • Рекомендации по оборудованию

Занятие 3. Расследование проблем производительности

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

Разберем как платные, так и бесплатные инструменты анализа производительности.

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

Читайте также:  8 утилит настройки Windows 10 – полезных каждому пользователю

После изучения данной главы Вы научитесь точно определять причины, которые приводят к замедлению.

Видеоуроки:

  • Сервис анализа неоптимальных запросов
  • Сбор и анализ данных с помощью сервиса взаимоблокировок
  • Анализ медленных запросов без контекста
  • Сервис анализа ожиданий на блокировках
  • Сбор и анализ данных сервиса блокировок
  • Сбор и выгрузка данных с помощью сервиса
  • Анализ управляемых блокировок с помощью сервиса
  • Анализ блокировок СУБД с помощью сервиса
  • Сервис анализа событий технологического журнала
  • Установка и настройка сервиса анализа взаимоблокировок
  • Выгрузка данных о взаимоблокировках с помощью сервиса
  • Анализ данных о взаимоблокировках
  • Подключение сервиса через тонкий клиент
  • Устранение ошибки SHOWPLAN permission denied

Занятие 4. Базовые причины неоптимальной работы запросов

Оптимизация медленных запросов может дать прирост производительности в десятки раз – такого эффекта невозможно добиться с помощью апгрейда железа.

В этом занятии мы рассмотрим:

  • Примеры неоптимальных запросов
  • Причины медленной работы запросов
  • Ключевые приемы по оптимизации запросов

Видеоуроки:

  • Соединение с подзапросами
  • Использование временных таблиц, индексация временных таблиц
  • Соединение с виртуальными таблицами
  • Подзапрос в условии соединения
  • Подзапросы в условиях и вложенные подзапросы
  • Несоответствие индексов и условий. Регистр накопления
  • Условия, не позволяющие использовать индекс. ИЛИ
  • Условия, не позволяющие использовать индекс. Вычисление
  • Условия, не позволяющие использовать индекс. НЕ В
  • Условия, не позволяющие использовать индекс. Функции
  • Условия, не позволяющие использовать индекс. Вхождение полей в разные списки
  • Условия, не позволяющие использовать индекс. Вхождение в список с большим числом элементов
  • Фильтрация виртуальных таблиц
  • Запрос в цикле. НайтиПо
  • Запрос в цикле. Обращение к реквизитам
  • Запрос в цикле. Вывод ссылки на экран
  • Запрос в цикле. Коррелированные запросы
  • Запрос в цикле. Намеренное использование
  • Большой объем выборки данных
  • Обращение к полю через несколько точек
  • Получение ссылки от поля ссылочного типа Объединить и Объединить все
  • Запросы с RLS
  • Универсальные запросы
  • Особенности работы с виртуальной таблицей остатков
  • Особенности работы с виртуальной таблицей среза
  • Особенности выполнения пакетных запросов
  • Особенности объектного чтения данных

Шаг Настройка Планов обслуживания (Maintenance Plans, Регламентных заданий)

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

Шаг Настройка Планов обслуживания (Maintenance Plans, Регламентных заданий)

Итак, приведу свой пример настроенного Maintenance Plans с комментариями. Мой план состоит из 5 подпланов:

Первый подплан (ежедневное еженочное обслуживание сервера и резервных копий):

Шаг Настройка Планов обслуживания (Maintenance Plans, Регламентных заданий)

Данный подплан состоит из нескольких шагов. Связи зеленого цвета задают переход к следующему заданию при удачном завершении (т.е. без ошибок), связи синего цвета задают переход к следующему заданию при любом результате выполнения текущего. Параметры шагов видны на размещенных в редакторе заданиях. Параметры некоторых заданий нужно описать отдельно. Первым шагом выполняется «Проверка целостности базы данных» (Check Database Integrity Task), которая выполняется для всех баз системы и следующие задания выполняются только при отсутствии ошибок при проверке баз. Следующим шагом выполняется «Перестроение индексов баз данных» (Rebuild Index Task) для всех баз данных сервера. Данная процедура довольно ресурсоемкая, но в последствии ускоряет работу базы, т.к. если фрагментированость индексов > 25%, это резко снижает производительность сервера. Если размер баз не позволяет выполнять данную задачу, т.к. она занимает много времени, то рекомендуется делать данное действие хотябы раз в неделю, при этом, на ночные задания заменить задачу Перестроение индексов баз данных (Rebuild Index Task) на Дефрагментацию индекса (Reorganize Index Task), которая менее  ресурсоемка. Далее происходит «Обновление статистики базы данных» (Update Statistics Task) для всех баз данных, опять же для оптимизации. После этого задания рекомендуется выполнить «Очистку процедурного кэша«:

Читайте также:  Восстановление хранилища компонентов в windows 7

При этом, запускается процедура

Шаг Настройка Планов обслуживания (Maintenance Plans, Регламентных заданий)

DBCC FREEPROCCACHE

После оптимизации работы желательно сделать резервную копию журналов транзакций. Этот шаг делать не обязательно, но желательно.  Во время выполнения предыдущих шагов (Перестроение индексов баз данных (Rebuild Index Task) и Обновление статистики базы данных (Update Statistics Task)) файлы журналов вырастают примерно до размера базы данных, а то и более. В результате, в следующих подпланах при выполнении первого резервного копирования журнала транзакций, размер копии имеет довольно большой объем. Это может сильно увеличить вермя восстановления базы. Таким образом, делая копию логов до полной копии, мы избавляемся от данной проблемы. (спасибо за идею комментатору Kyoshiro)

Шаг Настройка Планов обслуживания (Maintenance Plans, Регламентных заданий)

Далее можно выполнить полный бэкап заданием Создание резервной копии базы данных (Back Up Database Task):

При выполнении данного задания копии складываются в сетевую папку на файловом сервере с расширением bak, при этом, для каждой базы создается своя папка:

Шаг Настройка Планов обслуживания (Maintenance Plans, Регламентных заданий)

SAMBA ~ # ls -1 /backup/full/ database1 database2 … SAMBA ~ # ls -1 /backup/full/satabase1/ database1_backup_ database1_backup_ …

После заверешения создания резервной копии параллельно запускается 3 задания: очистка резервных копий журналов транзакция (о создании таких копий — ниже) старее 5 дней, очистка полных бэкапов старее 1 недели и очистка истории старше 1 месяца (сюда входит в основном — очистка служебной информации MS SQL, такой как журналы):

Шаг Настройка Планов обслуживания (Maintenance Plans, Регламентных заданий)

Данный подплан у меня запускается каждую ночь в нерабочее время по будням:

Второй, третий, четвертый подплан (обновление статистики 3 раза в день):

Шаг Настройка Планов обслуживания (Maintenance Plans, Регламентных заданий)

Следующие 3 подплана одинаковы по содержимому и различаются лишь временем выполнения. Выполняются 3 раза в день — в 6, 13 и 19 часов:

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

Шаг Настройка Планов обслуживания (Maintenance Plans, Регламентных заданий)

Пятый подплан (резервное копирование журнала транзакций):

Данный план выполняет инкрементальное копирование транзакционного лога Microsoft SQL Server:

Шаг Настройка Планов обслуживания (Maintenance Plans, Регламентных заданий)

Копирование выполняется каждые пол часа в рабочее время и сохраняется в сеть с расширением trn:

После настройки данного плана мы имеем регулярное резервное копирование с необходимым регламентным обслуживанием, с хранением копий базы данных за последние 7 дней с возможностью восстановления базы интервалом до 30 минут.

Шаг Настройка Планов обслуживания (Maintenance Plans, Регламентных заданий)

Более подробно о выборе и планировании плана обслуживания можно посмотреть данный подкаст(временно убран по причине заражения сайта ):