УНИЧТОЖИТЬ в конце пакета: временная таблица всё это время лежала в tempdb
База данных - HighLoad оптимизация
Файлы
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний
Оформите подписку на компанию для решения рабочих задач
Оформить подписку и скачать решение со скидкойВы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
Вставьте текст пакетного запроса и нажмите одну кнопку. Обработка вернёт список: по каждой временной таблице видно, где она создана, где использована в последний раз и был ли УНИЧТОЖИТЬ вообще. Разрыв между последним использованием и концом пакета - это и есть время, которое таблица зря пролежала в tempdb.
Дальше она отдаёт исправленный текст: УНИЧТОЖИТЬ стоит сразу после последнего использования каждой таблицы. Логика не меняется, план запроса не меняется, память освобождается раньше. По типовому отчёту на 15 пакетов картина обычно такая: половина таблиц не уничтожается вовсе, вторая половина одним блоком в конце.
Один запрос вы поправите и руками. Сто запросов из своей конфигурации - уже нет, поэтому у обработки есть экспортная функция: ОптимизироватьЗапрос(Текст) вызывается из вашего кода и прогоняет разом всё, что нашли поиском по модулям.
Что делает
- Разбирает пакетный запрос: находит все временные таблицы (ПОМЕСТИТЬ/INTO) и место последнего использования каждой.
- Показывает отчёт: где создана, где последний раз использована, был ли УНИЧТОЖИТЬ в исходном тексте.
- Генерирует оптимизированный текст: УНИЧТОЖИТЬ вставлен сразу после последнего использования; существующие УНИЧТОЖИТЬ переставляются на правильные места (повторный прогон ничего не дублирует).
- Таблицы, живущие до последнего пакета, не трогает - менеджер временных таблиц закроется сам, о чём честно пишет в отчёте.
Что учтено в разборе
- Комментарии // и строковые литералы: упоминание таблицы в комментарии или строке использованием не считается.
- Поиск имени по границам слова: ВТ_Товары и ВТ_Товары2 не путаются.
- Регистронезависимость и англоязычный синтаксис (SELECT … INTO, DROP).
- Вложенные подзапросы «В (ВЫБРАТЬ …)» считаются использованием.
Принцип безопасности
Обработка работает только с текстом запроса: к данным, метаданным и СУБД не обращается. Открыли - вставили текст - получили оптимизированный вариант и отчёт.
Зачем это вам
Из практики оптимизации больших баз: в типовом «отчёте на 15 пакетов» половина временных таблиц не уничтожается вовсе, а вторая половина - одним блоком в конце. На базах в сотни гигабайт это заметная нагрузка на tempdb при каждом запуске отчёта. Расстановка УНИЧТОЖИТЬ по месту последнего использования - самая дешёвая оптимизация пакетного запроса: ничего не переписывается, план не меняется, память освобождается раньше.
Совместимость
1С:Предприятие 8.3, управляемые формы, любая конфигурация (обработка не зависит от метаданных). Код открыт.
Что в файле
Внешняя обработка .epf. Вставили пакетный запрос - нажали «Расставить УНИЧТОЖИТЬ» - забрали оптимизированный текст и отчёт по каждой временной таблице.
Другие наши инструменты диагностики 1С
Эта обработка отвечает на один вопрос: как переписать пакетный запрос, чтобы временные таблицы не жили дольше нужного. Соседние вопросы закрывают остальные.
Производительность и объём:
- Трансформатор SQL → 1С - что делает конкретный запрос из профайлера, переведённый в термины метаданных.
- Чек-ап СУБД под 1С - правильно ли база стоит на сервере: 40+ проверок с вердиктом.
- Карта объёмов базы 1С - из чего состоит база и куда ушли гигабайты.
Код и переезд:
- Анализ кода внешних обработок 1С - что лежит в накопившихся .epf: рейтинг по качеству и техдолг.
- Проверка базы перед миграцией на PostgreSQL - предполётный чек-лист, если базу собираются переносить с MS SQL.
Порядок разбора обычно такой: сначала смотрим, из чего база и как она стоит на сервере, потом спускаемся к конкретному запросу.
Проверено на следующих конфигурациях и релизах:
- Розница, редакция 2.3, релизы 2.2.6.18
Вступайте в нашу телеграмм-группу Инфостарт