Mazmunga o'tish
Tez Base

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  1. 01

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

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

  2. 02

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

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

  3. 03

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

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

O'zingiz hal qila olmayapsizmi? Yozing, birga ko'ramiz

1C nega sekin ishlayotganining haqiqiy sababini va uning ishini qanday tezlashtirish mumkinligini topamiz - taxmin bilan emas, texnologik jurnal va soʻrov rejalari orqali. Hujjat oʻtkazish, hisobotlar va almashinuvlarni bir necha barobar tezlashtiramiz. Qozogʻiston va MDH boʻylab masofadan.

Narxi
150 000 ₸ danloyiha uchun; soliqlarsiz; bepul auditdan keyin qat'iy belgilanadi
"ogʻir" operatsiyalar boʻyicha odatiy natija
soatlar → daqiqalar

Mavzu boyicha tahlillar

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

Infostartdagi kartochka →

Ko'p so'raladigan savollar

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

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

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

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

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

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

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

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

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

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

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

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

1C tizimingiz uchun bepul ekspress-audit

1-2 kun ichida bazangizni ko'rib chiqamiz, unumdorlik qayerda yo'qolayotganini topamiz va nima qilish kerakligini aytamiz. Majburiyatsiz.

Bepul ekspress-audit olish

Vazifani muhokama qilamiz

Eng tezi WhatsApp: vazifa haqida bir-ikki qator yozing, ish kuni davomida javob beramiz.

[email protected]

Arizani forma orqali qoldirish qulayroq