Мазмұнға өту
Tez Base

Обработка на Инфостарте

УНИЧТОЖИТЬ стоит в конце пакета, а надо раньше

Разрыв между последним использованием таблицы и концом пакета - это время, которое она зря пролежала в tempdb. На типовом отчёте таких разрывов половина.

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

Картина по типовому отчёту на пятнадцать пакетов обычно такая: половина временных таблиц не уничтожается вовсе, вторая половина уничтожается одним блоком в самом конце. Всё это время они занимают tempdb, а на нагруженной базе tempdb - общий ресурс, за который дерутся все.

Обработка разбирает пакетный запрос, находит каждую временную таблицу и место её последнего использования, и отдаёт исправленный текст: УНИЧТОЖИТЬ стоит сразу после последнего использования.

Логика не меняется, план запроса не меняется, память освобождается раньше.

Что она делает

Показывает разрыв по каждой таблице

Где создана, где использована в последний раз, был ли УНИЧТОЖИТЬ в исходном тексте вообще.

Отдаёт исправленный текст

Не советы, что поправить, а готовый запрос, который можно вставить обратно.

Работает пачкой через экспортную функцию

Один запрос вы поправите и руками. Сто запросов из своей конфигурации уже нет, поэтому есть вызов ОптимизироватьЗапрос(Текст) из вашего кода: прогоняет разом всё, что нашли поиском по модулям.

Как пользоваться

  1. 01

    Вставить текст пакетного запроса

    Одна кнопка, никаких настроек.

  2. 02

    Посмотреть отчёт

    По каждой таблице видно, сколько она пролежала лишнего.

  3. 03

    Забрать исправленный текст

    Или, если запросов много, вызвать экспортную функцию из своего кода и прогнать всё разом.

Өзіңіз шеше алмай жатырсыз ба? Жазыңыз, бірге қараймыз

1С неге тежелетінінің нақты себебін және оның жұмысын қалай жылдамдатуға болатынын табамыз - жорамалмен емес, технологиялық журнал мен сұрау жоспарлары арқылы. Құжат өткізуді, есептер мен алмасуларды бірнеше есе жылдамдатамыз. Қазақстан мен ТМД бойынша қашықтан.

Құны
150 000 ₸-денжоба үшін; салықтарсыз; тегін аудиттен кейін тіркеледі
"ауыр" операциялар бойынша әдеттегі нәтиже
сағаттар → минуттар

Тақырып бойынша талдаулар

Оптимизация ночного регламента 1С без переписывания: 4 антипаттерна, которые съедают окно

Ночной регламент переоценки товаров рос с 55 до 100 минут и подбирался к границе окна. Обработку на 9 400 строк не переписывали: время утекало в пяти конкретных местах, и каждое чинится точечно. Разбираем универсальные антипаттерны регламентных заданий 1С, методику проверки "было / стало" и то, как найти те же места у себя.

"tempdb is full": ошибка 9002 в 1С - тушим за пять минут и убираем навсегда

Посреди рабочего дня у всех разом выпадает "Ошибка СУБД" про tempdb и транзакции - и работа встаёт. В сообщении уже есть весь диагноз, если прочитать его по частям. Разбираем, почему журнал служебной базы tempdb переполняется даже на мощном сервере, как тремя командами за пять минут найти держателя журнала и как настроить tempdb и код, чтобы 9002 не возвращалась.

Длинные транзакции в 1С: где они рождаются в коде и как их разбить

"Сделаем всё в одной транзакции, чтобы было атомарно" - фраза, после которой база встаёт в пик. Длинная транзакция держит блокировки, копит версии строк в tempdb, не даёт очищаться журналу, а при сбое откатывается столько же, сколько работала. Разбираем типовые места в коде 1С, где такие транзакции появляются, как их найти и как разбить на порции, не потеряв целостность данных.

8 приёмов оптимизации запросов 1С: с кодом "до/после" и боевыми замерами

Ни одно из ускорений в 2-6 раз на нашем проекте ценообразования не потребовало менять бизнес-логику - все тормоза жили в том, как код обращается к данным. Разбираем восемь типовых болезней с примерами кода и замерами: от среза без отбора (39 минут → 6 секунд) до запроса в цикле (810 → 43 с). В конце - чек-лист для самопроверки.

Инфостарттағы карточка →

Жиі қойылатын сұрақтар

Можно отдать ей объект Запрос, чтобы текст правился сам перед выполнением?

Готовой обёртки над объектом Запрос нет, и у неё была бы цена: в отладчике и технологическом журнале был бы виден один текст, а выполнялся бы другой. Из кода вызывается ОптимизироватьЗапрос: текст на входе, исправленный на выходе. Для отчёта есть РасставитьУничтожить, для разбора без правки текста АнализироватьПакет.

Есть ли от этого заметный выигрыш?

Зависит от пакета: выигрыш виден на длинных пакетах и живущем менеджере временных таблиц, где таблица иначе пролежала бы в tempdb до конца пакета. На коротком пакете из двух-трёх таблиц разница в пределах шума. В одном случае из практики запрос каскадного ценообразования после обработки выполнился на 20 % быстрее.

А если одно имя временной таблицы создаётся в пакете несколько раз?

С версии 1.2 это поддержано: каждая жизнь имени считается отдельно, и УНИЧТОЖИТЬ встаёт раньше пересоздания. До 1.2 на таком пакете промежуточный УНИЧТОЖИТЬ выбрасывался, и запрос падал с ошибкой "Временная таблица уже существует". Пакеты с двумя и тремя жизнями имени проверены выполнением.

Что будет с УНИЧТОЖИТЬ, которые в тексте уже стоят?

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

Зависит ли она от конфигурации и обращается ли к базе?

Нет. Обработка работает только с текстом запроса: к данным, метаданным и СУБД не обращается, поэтому подходит к любой конфигурации. Платформа 8.3, управляемые формы, код открыт.

Не собьют ли разбор комментарии и похожие имена таблиц?

Нет. Имя таблицы в комментарии // или в строковом литерале использованием не считается, имена ищутся по границам слова, так что ВТ_Товары и ВТ_Товары2 не путаются. Регистр не важен, английские SELECT INTO и DROP понимаются, вложенный подзапрос В (ВЫБРАТЬ ...) считается использованием.

1С жүйеңізге тегін экспресс-аудит

1-2 күнде базаңызды қарап, өнімділік қайда жоғалып жатқанын табамыз және не істеу керегін айтамыз. Міндеттемесіз.

Тегін экспресс-аудит алу

Тапсырманы талқылайық

Ең жылдамы WhatsApp: тапсырма туралы бірер жол жазыңыз, жұмыс күні ішінде жауап береміз.

[email protected]

Өтінімді формамен қалдыру ыңғайлырақ