ЧТО ТАКОЕ PG_TEMP В POSTGRESQL ДЛЯ 1С И КТО ИХ СОЗДАЕТ?
pg_temp — это пространство СУБД PostgreSQL для временных таблиц, то есть таблиц, существующих в пределах жизни одного соединения (в терминах СУБД) или сеанса (в терминах кластера 1С).
Такие таблицы мы можем увидеть в тексте запроса СУБД, если в запросе на языке запросов 1С присутствует конструкция ПОМЕСТИТЬ, которая и помещает выборку во временную таблицу. Таким образом созданием этой временной таблицей управляет разработчик.
Но не всегда появление данной таблицы зависит от разработчика.
В некоторых ситуациях мы можем обнаружить в тексте запроса pg_temp, создание которой не инициировали авторы кода.
Приведём пример реального запроса из технологического журнала:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
SELECT T1._IDRRef FROM _Reference100 T1 WHERE (((T1._Fld728 = CAST(0 AS NUMERIC))) AND (EXISTS(SELECT 1 FROM (SELECT 1 AS SDBL_DUMMY) SDBL_DUAL INNER JOIN _InfoRg2845 T2 ON ('\\010'::bytea = T2._Fld2846_TYPE AND '\\000\\000\\000d'::bytea = T2._Fld2846_RTRef AND T1._IDRRef = T2._Fld2846_RRRef) INNER JOIN _InfoRg4807 T3 ON (T2._Fld2847RRef = T3._Fld4808RRef) WHERE (((T2._Fld728 = CAST(0 AS NUMERIC))) AND (T3._Fld728 = CAST(0 AS NUMERIC))) AND (EXISTS(SELECT 1 FROM pg_temp.tt1 T4 WHERE (T4._INVALUELISTTRef IS NOT NULL AND T4._INVALUELISTRRef IS NOT NULL) AND ((T3._Fld4809_TYPE = '\\010'::bytea AND T3._Fld4809_RTRef = T4._INVALUELISTTRef AND T3._Fld4809_RRRef = T4._INVALUELISTRRef))))))) AND ((T1._Marked = FALSE) AND (T1._Fld7399RRef = '\\202T\\000\\025]r\\363\\023\\021\\354\\246\\215\\236\\216\\300\\376'::bytea)) LIMIT 100 |
В запросе присутствует таблица pg_temp.tt1.
Поискав следы ее создания в журнале ранее по времени. Обнаружим записи со созданию индекса:
1 |
create index tmpind_0 on pg_temp.tt1(_INVALUELISTTRef, _INVALUELISTRRef)' |
и самой таблицы:
1 2 3 4 5 |
INSERT INTO pg_temp.tt1 (_INVALUELISTTRef,_INVALUELISTRRef) VALUES($1,$2)',Prm=" p_1: '\\000\\000\\000\\354'::bytea p_2: '\\236p\\000\\025]r\\363\\023\\021\\354\\301o\\361\\310\\211\\260'::bytea",Prm=" p_1: '\\000\\000\\000\\266'::bytea p_2: '\\236p\\000\\025]r\\363\\023\\021\\354\\301o\\361\\317O>'::bytea" |
В нашем случае платформа сама посчитала необходимым и создала временную таблицу. Мы, конечно, не знаем всех мотивов, по которым это произошло, они скрыты под капотом платформы и достоверно известны только её разработчикам.
Но, известно, что сделано это было для оптимизации запросов с условием «В», связано с тем, что условие накладывается на поле составного типа и в условии есть ссылки на разные типы объектов.
В нашем случае подобная оптимизация привела к печальным последствиям.
Было организовано соединение с временной таблицей, которое заняло 65% времени выполнения всего запроса.
Это поведение, приводящее к ошибочной оптимизации, было исправлено в https://bugboard.v8.1c.ru/error/000098601.
Еще можно посмотреть
Настройка и сбор логов для анализа проблем производительности систем 1С на Linux
Для осуществления мониторинга за качеством работы систем на базе 1С, а также для анализа проблем с производительностью, необходимо уметь настраивать сбор логов, дампов. Настройка сбора логов 1С под Linux имеет ряд особенностей. О них мы и поговорим в данной статье. Описание приводится для ОС Linux дистрибутивов RHEL/CentOS 7. 1. Как настроить и включить технологический журнал […]
История одного конфликта блокировок 1С
В определенный момент времени, пользователи информационной базы, которые ранее работали без проблем — начали жаловаться на возникновение ошибок при записи элемента справочника. В нашем распоряжении оказались скрины и тексты ошибок, переданные пользователями. Без возможности самостоятельного воспроизведения проблемы в этой или каких-либо других тестовых базах данных. 1. Знакомимся с текстами ошибок. 2. Парсим технологический журнал 1С […]
1C тормозит и возникают ошибки. С чего начать расследование?
Когда мы читаем о том, как настраивать и анализировать технологический журнал 1С на предмет «узких» мест, мы не всегда представляем себе, что это отнюдь не первое, что нужно сделать, когда сталкиваемся с падением производительности и стабильности работы системы. Прежде чем «бросаться» собирать технологический журнал и его парсить, изначально рекомендуется провести первичный сбор информации о проблеме: […]
ОШИБКА 1С:ПРЕДПРИЯТИЯ «ПОТЕРЯНО СОЕДИНЕНИЕ»
У пользователя во время работы может возникать сообщение: [crayon-651491b4ef7d6366506619/] После чего рабочий режим либо восстанавливается, либо нет. В сообщении достаточно ясно описана возникшая ситуация, но необходимо понимать, что по другую сторону экрана пользователя, ландшафт системы может быть несколько сложнее, чем он себе представляет. И сервер «с которым потеряно соединение» может быть не только сервер 1С:Предприятия. […]
Анализ технологического журнала 1С регулярными выражениями. От простого к сложному.
Что делать, если у пользователя возникают ошибки, «все тормозит» или возникают другие неясные проблемы, а разработчик не знает где искать проблему в коде? С этой статьи мы начинаем нашу рубрику по расследованию проблем производительности и стабильности работы систем на базе 1С:Предприятия. Речь пойдет о реальных примерах анализа технологического журнала 1С экспертами с помощью регулярных выражений. […]
Статистика PostgreSQL при работе с 1С:Предприятием
В этой статье поговорим о статистике в PostgreSQL. 1. Симптомы неактуальной статистики в базе. 2. Как обновляется статистика в PostgreSQL и надо ли ее обновлять принудительно? 3. Как обновить статистику в PostgreSQL вручную? Симптомы неактуальной статистики в базе. В какой-то момент(в какой именно теперь уже не вспомнит никто) тестовая база начала сильно тормозить, при низкой […]
Технологический журнал 1С и бесконечный цикл в коде 1С
Несмотря на то, что проблема в статье История одного конфликта блокировок 1С , казалось, была решена, ее повторное появление не заставило себя долго ждать. Пользователь Лапкина вновь приступила к работе и ее сеанс снова парализовал работу пользователей системы с блокируемым справочником. Описание ошибки: Пользователь создает элемент справочника и при записи система 1С:Предприятия «повисает». Сеанс закрывается пользователем, […]
Похожие записи
- ЧТО ТАКОЕ TTIMEOUT 1С:ПРЕДПРИЯТИЯ И КАК ЕГО НАЙТИ?
- НАСТРОЙКА PG_PROFILER ДЛЯ POSTGRESQL 11.
- Статистика PostgreSQL при работе с 1С:Предприятием
- Настройка непрерывного архивирования (point-in-time-recovery, PITR) в PostgresPro 11 Linux
- Пропажа индексов дескрипторов в 1С:Документообороте
- Технологический журнал 1С и бесконечный цикл в коде 1С
- 1C тормозит и возникают ошибки. С чего начать расследование?
- Хранение файлов 1С в томах на nfs-шаре Linux
- Администрирование серверов 1С на Linux
- Настройка и сбор логов для анализа проблем производительности систем 1С на Linux