Məzmuna keç
Tez Base

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  1. 01

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

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

  2. 02

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

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

  3. 03

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

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

Özünüz həll edə bilmirsiniz? Yazın, birlikdə baxaq

1C-in yavaşlamasının əsl səbəbini tapır və onun işini necə sürətləndirməyi müəyyən edirik - təxminlə yox, texnoloji jurnal və sorğu planları ilə. Sənədlərin keçirilməsini, hesabatları və mübadilələri dəfələrlə sürətləndiririk. Qazaxıstan və MDB üzrə uzaqdan.

Qiyməti
150 000 ₸-dənlayihə üçün; vergilərsiz; pulsuz auditdən sonra sabitlənir
"ağır" əməliyyatlar üzrə tipik nəticə
saatlar → dəqiqələr

Mövzu üzrə təhlillər

Оптимизация ночного регламента 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 с). В конце - чек-лист для самопроверки.

Infostartda kartoçka →

Tez-tez verilən suallar

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

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

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

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

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

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

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

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

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

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

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

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

1C sisteminiz üçün pulsuz ekspress-audit

1-2 gün ərzində bazanıza baxıb, məhsuldarlığın harada itdiyini tapacağıq və nə etmək lazım olduğunu deyəcəyik. Öhdəliksiz.

Pulsuz ekspress-audit əldə edin

Tapşırığı müzakirə edək

Ən sürətlisi WhatsApp: tapşırıq barədə bir-iki sətir yazın, iş günü ərzində cavab verəcəyik.

[email protected]

Müraciəti forma ilə qoymaq daha rahatdır