Поддержка и оптимизация MS SQL Server
Ускорение, отказоустойчивость и разбор аварий на MS SQL Server. 30 лет практики, 38 инстансов под сопровождением прямо сейчас.
База «ожидает восстановления», не стартует служба, кончилось место под журнал транзакций, переключилась группа доступности, всё встало после обновления - подключаемся в тот же день. Сначала поднимаем работоспособность, разбор причин делаем после.
Написать по аварииЧто делаем
- Самые тяжёлые запросы и разбор планов выполнения
- Индексы: отсутствующие, неиспользуемые, фрагментированные
- Блокировки, взаимоблокировки, режим версионности строк
- Память, TempDB, параллелизм, размещение файлов
- Уровень совместимости и последствия его смены
- Группы доступности AlwaysOn: настройка, свидетель, кворум
- Разбор причин переключений и обвязка приложений вокруг них
- Георепликация и разнесение по площадкам
- Учения по переключению и проверка, что бизнес переживёт его
- Схема копирования под допустимые потери и время восстановления
- Журнал транзакций: режим восстановления, рост, обрезка
- Проверка восстановлением, а не отметкой об успешном задании
- Восстановление на точку во времени и разбор повреждений
- Регламентное обслуживание индексов и статистики
- Мониторинг и алерты вместо разбора по факту жалоб
- Разбор инцидентов с письменным заключением
- Оценка рисков и подготовка к переходу на PostgreSQL
Смотрим связку целиком: параметры SQL Server под учётную систему, тяжёлые запросы с её стороны, режим блокировок, регламентные задания. Большая часть тормозов «в ERP» лечится на стороне СУБД, без доработок в самой системе.
Примеры из практики
Производство. Ключевые отчёты формировались 40+ минут и блокировали пользователей. После разбора запросов и перестройки индексов - 90 секунд.
Ритейл, 200 пользователей. База падала 2-3 раза в неделю с простоем по 2-4 часа. После аудита и настройки нового сервера - ни одного падения.
Как начать
Первый шаг - диагностика одного инстанса: 30 000 ₽, три рабочих дня, отчёт со списком проблем по приоритетам и оценкой работ в днях. Дальше - разовые работы по часам (4 200 или 6 500 ₽/час) или абонентское обслуживание за 150 000 ₽/мес до пяти инстансов.
Частые вопросы
Поддержка MS SQL Server закончилась в России. Что делать?
Серверы работают, но обновлений безопасности и вендорской поддержки нет: инцидент разбирать некому, а известные уязвимости остаются незакрытыми. Практический ответ - обеспечить сопровождение своими силами или силами подрядчика и параллельно оценить миграцию на PostgreSQL, не откладывая её до момента, когда что-нибудь сломается.
Что делать прямо сейчас, если база «ожидает восстановления»?
Не перезапускать службу повторно и не отсоединять базу - этим можно усугубить ситуацию. Чаще всего причина в недоступности файлов данных или журнала: диск не смонтировался, кончилось место, изменились права. Напишите нам с описанием симптома, подключимся в тот же день: у нас это экстренный случай, а не заявка в очередь.
Сервер тормозит после обновления. Это совпадение?
Обычно нет. Смена уровня совместимости базы включает новую модель оценки кардинальности и другие режимы выполнения - планы запросов меняются, и часть из них становится хуже. Разбирается по статистике запросов до и после; лечится точечно, а не откатом всего сервера. Разбор реального такого инцидента есть в блоге.
У нас группы доступности AlwaysOn. Вы с ними работаете?
Да: настройка и разбор поведения групп доступности, дизайн свидетеля и кворума, синхронные и асинхронные реплики, обвязка приложения вокруг переключения. Быстрое автоматическое переключение само по себе не гарантирует, что бизнес продолжит работать, - разбор такого случая на 7,5 часов простоя описан в блоге.
Можно ли ускорить сервер, не переписывая приложение?
В большинстве случаев да. Индексы, статистика, настройки памяти и TempDB, режим блокировок, регламентные задания - всё это на стороне СУБД. Переписывание запросов нужно там, где упёрлись в саму логику, и это видно из отчёта после диагностики: вы узнаете объём работ до того, как решите его оплачивать.
Расскажите о задаче - мы предложим подходящий формат.