Чёрный ящик SQL Server под 1С: кто съел tempdb и держал блокировку, даже после перезагрузки
База данных - HighLoad оптимизация
Файлы
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний
Оформите подписку на компанию для решения рабочих задач
Оформить подписку и скачать решение со скидкойВы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
Сервер перезагрузили посреди аварии, и через час уже не сказать, кто занимал tempdb и кто держал блокировку: SQL Server после перезапуска забывает активные запросы, сервер 1С забывает сеансы. Чёрный ящик записывает это заранее, раз в минуту, и хранит 14 суток. Обработка разбирает выбранный период и к каждому соединению SQL пишет пользователя 1С и базу.

Что делает
- Пишет на стороне SQL Server. Задание SQL Agent раз в минуту сохраняет снимок в отдельную служебную базу. Снимки есть и тогда, когда 1С уже не отвечает, и переживают перезагрузку сервера.
- Что в снимке: долгие запросы с текстом и ожиданием, место в tempdb по каждому сеансу, кто кого блокирует, транзакции дольше минуты с объёмом журнала, выданная запросам память, ожидания сервера и задержки файлов, свободное место на дисках. План сохраняется у запросов дольше 10 с.
- Пользователь 1С у соединения SQL. Команда "Записать сеансы 1С" (БСП, по расписанию раз в минуту) запоминает, какое соединение с СУБД держит каждый сеанс 1С. В разборе вместо безымянного номера сеанса SQL стоит пользователь, база, тип клиента и номер сеанса 1С.
- Главное за период. Нажали "Сутки" или задали интервал: сверху одним блоком кто больше всех занял tempdb, кто дольше всех держал блокировку, самая долгая транзакция и первая тревога. Ниже таблицы по каждому разделу.
- Тревоги: tempdb всего и одним сеансом, мало места на диске, долгая блокировка, долгая транзакция, давно нет бэкапа. Пишутся в таблицу, письмом уходят через Database Mail, если он настроен. Пороги задаются в обработке.
- Скрипт установки собирает обработка с вашими порогами и сроком хранения. Сохраняется в файл и отдаётся администратору SQL. Повторный запуск сохраняет историю, скрипт удаления убирает задание и базу снимков целиком.

Сколько стоит серверу
- прогон задания в среднем 166 мс, это 0,02 % сервера на 12 ядрах (30 прогонов подряд на нашем стенде);
- данные снимков в покое около 1,7 МБ в сутки;
- файлы базы снимков при установке сразу занимают 320 МБ: место выделяется заранее, чтобы база не прирастала по кусочку;
- снимки старше 14 суток удаляются сами раз в час, срок меняется.

Совместимость
- MS SQL Server 2016 SP1 - 2022 с запущенным SQL Server Agent; Express, PostgreSQL и файловые базы не поддерживаются;
- установка один раз под учётной записью с правами sysadmin, самой обработке они не нужны: скрипт заводит ей роль на чтение снимков и запись сеансов 1С в базу снимков;
- платформа 8.3, управляемые формы, сервер 1С под Windows; для имени пользователя 1С нужна БСП и сервер администрирования (RAS);
- таблицы информационной базы 1С не читает и не пишет: обработка подключается только к своей базе снимков, задание читает служебную статистику SQL Server;
- рекомендаций по настройкам SQL Server нет, для этого Чек-ап СУБД под 1С.
Что в файле
Архив: обработка .epf и рядом скрипты install.sql и uninstall.sql для администратора SQL. Те же скрипты обработка показывает и сохраняет сама.
Как появилась обработка: Кассы 1С висели с обеда, серверы перезагрузили трижды. Через три недели искать причину было уже не по чему.
Проверено на следующих конфигурациях и релизах:
- Управление торговлей, редакция 11, релизы 11.5.22.67
Вступайте в нашу телеграмм-группу Инфостарт