Удаление временных таблиц в PostgreSQL? - PullRequest
0 голосов
/ 26 июня 2018

Любопытно, нужно ли отбрасывать временные таблицы, которые используются строго в отношении функции, в которой они объявлены? Новичок в postgreSQL и не нашел много информации по этой теме. Я знаю, что в SQL это делается автоматически, но, безусловно, MS SQL и postgreSQL имеют свои различия. Как вы думаете, что является наилучшей практикой с точки зрения удаления временных таблиц, объявленных в функциях, если они вообще необходимы?

1 Ответ

0 голосов
/ 26 июня 2018

они несколько отличаются для MS и Pg. Ms обрабатывает локальные временные таблицы, созданные в SP, - отбрасывается после завершения процедуры Postgres не в настоящее время поддерживает GLOBAL временные таблицы (указание этого в операторе create игнорируется)

Опционально, GLOBAL или LOCAL могут быть написаны до TEMPORARY или TEMP. В настоящее время это не имеет значения в PostgreSQL и устарело;

Лучшая практика здесь не очень применима, я бы сказал. Оставлять временные таблицы на время сеанса можно (они будут удалены в конце). Но часто вы бы предпочли использовать ON COMMIT DROP для удаления таблицы после завершения транзакции, а не сессии ... Если бесконечный сеанс сравнительно подходит для postgres, бесконечная транзакция может быть промежуточной для MVCC и блокировок и т. Д. хочу посмотреть на способы с этим бороться ...

Подводя итог: часто практикуется сохранение временных таблиц до конца сеанса, более "нормальных", чтобы оставить их до конца транзакции. Postgres не обрабатывает временные таблицы, созданные в fn() специально. Postgres не имеет GLOBAL временных таблиц. В зависимости от кода, который вы пишете и env у вас есть, вы можете удалить или оставить временную таблицу для автоматического удаления. Не забывайте об особенностях объединения сессий / транзакций.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...