Платформа 1С оптимизирует работу с временными таблицами в PostgreSQL, переиспользуя их в рамках одного соединения с СУБД. Если структура новой временной таблицы совпадает с уже существующей, платформа не создает новую таблицу, а использует имеющуюся, что экономит время на операциях создания и удаления.
Функция SELECT FASTTRUNCATE отвечает за очистку временных таблиц для их дальнейшего использования. Она накладывает эксклюзивную блокировку, удаляет данные и при необходимости пересчитывает статистику. Платформа вызывает эту функцию автоматически по завершении запроса или при закрытии менеджера временных таблиц.
Исследование продуктивной базы ERP объемом 700 ГБ показало, что система создает около 5 миллионов временных таблиц в сутки. При этом 32% из них оказываются пустыми в момент вызова очистки. Выполнение функции SELECT FASTTRUNCATE для таких таблиц создает избыточную нагрузку на процессор.
При миграции одной из баз данных на PostgreSQL производительность упала на 70% по сравнению с MS SQL. Основной причиной стала функция SELECT FASTTRUNCATE, которая замедляла выполнение операций. Проблему решили, исключив выполнение запросов, создающих пустые временные таблицы, что позволило избежать лишних вызовов очистки.
Инструменты мониторинга, включая платформу Tantor, показывают, что SELECT FASTTRUNCATE может потреблять до 12,9% процессорного времени. Основные затраты приходятся на операцию heap_truncate. Специалисты отмечают, что доработка функции для пропуска очистки пустых таблиц могла бы повысить общую эффективность работы системы.




