[ Вопрос дня ] Для чего и когда нужно удалять временные таблицы?

Доброго дня, коллеги!

При работе с конструктором запроса у разработчика может возникнуть вопрос – для чего нужна настройка «Уничтожение временной таблицы»?

Слушатель курса Разработка и оптимизация запросов в 1С:Предприятие 8 попросил тренера помочь разобраться с этим вопросом. Он получил развернутый ответ и теперь пользуется этой возможностью для оптимизации запросов к базе данных. Теперь и вы тоже можете воспользоваться этой информацией :)

Вопрос

Почему в примерах с временными таблицами не используется уничтожение самой временной таблицы? Да и почти нигде не вижу, чтобы эту возможность использовали.

Ответ

По коду типовых конфигураций скорее не используется явное уничтожение временных таблиц.

Они явно удаляются, например, если возникает необходимость в менеджере временных таблиц создать повторно таблицу с таким же именем.

Значит, платформа автоматически следит за временем жизни временных таблиц.

Если в запросе явно не установлен менеджер временных таблиц, то платформа самостоятельно будет удалять временные таблицы из tempdb.

Для оптимизации SQL-сервер может использовать команду TRUNCATE TABLE вместо DELETE для ускорения операции.

Время жизни временной таблицы должно определяться временем жизни менеджера временных таблиц. Как только менеджер перестает существовать, можно удалять таблицы. Но существует явление, называемое «утечка памяти» – когда уже ненужные приложению участки памяти не освобождаются. При возникновении такой ситуации на сервере 1С временные таблицы могут подвиснуть в tempdb. Поэтому, я думаю, есть смысл явно удалять временные таблицы, если в них помещаются огромные объемы данных, чтобы застраховаться от утечки памяти. Точных числовых показателей таких размеров не встречал.

Размеры tempdb явно задаются в настройках MS SQL Server Management Studio. Их можно изменить в зависимости от имеющихся ресурсов. Можно установить, что размер этой базы данных будет неограничен. По умолчанию размер этой базы данных как раз неограничен.

Важно, что tempdb создается заново при каждом перезапуске Microsoft SQL Server. После перезапуска не будет «подвисших» временных таблиц.

Это пример разобранного вопроса из Мастер-группы курса
Разработка и оптимизация запросов в 1С:Предприятие 8.

Описание курса и примеры видео

А вы сталкивались с утечкой памяти из-за помещения огромных объемов данных во временные таблицы? Пишите в комментариях!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Вход на сайт

Зарегистрироваться

Подтверждение регистрации будет отправлено на указанный e-mail.

Я подтверждаю, что ознакомлен(а) с Пользовательским соглашением, принимаю его условия и даю свое согласие на обработку моих персональных данных.

Восстановить доступ

E-mail или логин

Ссылка на создание нового пароля будет отправлена на указанный e-mail.