11
Специальные схемы
Временные таблицы
существуют на время сеанса или транзакции
не журналируются (невозможно восстановление после сбоя)
не попадают в общий буферный кеш
Схема pg_temp_N
автоматически создается для временных таблиц
pg_temp — ссылка на конкретную временную схему данного сеанса
если pg_temp нет в пути, она неявно подразумевается самой первой
по окончании сеанса все объекты временной схемы удаляются,
а сама схема остается и повторно используется для других сеансов
PostgreSQL умеет работать с временными таблицами. Такие таблицы
предназначены для хранения данных, которые должны быть доступны
только текущему сеансу (и только на время его жизни, или даже на
время текущей транзакции).
При восстановлении после сбоя прежних сеансов не существует,
так что временные таблицы не восстанавливаются. Поэтому такие
таблицы не журналируются. Кроме того, страницы временных таблиц
не попадают в общий буферный кеш — работа с ними ведется во
внутренней памяти обслуживающего процесса. Благодаря этому,
работа с временной таблицей происходит несколько более
эффективно, чем с обычной.
Доступ к временным таблицам организован с помощью схем. Для
сеанса создается временная схема с именем pg_temp_N (pg_temp_1,
pg_temp_2 и т. п.). Обращаться к ней нужно по имени pg_temp (без
номера) — для каждого сеанса это имя ссылается на конкретную
временную схему.
Если pg_temp нет в пути, то эта схема просматривается перед всеми
остальными. При желании можно указать схему pg_temp (как и
pg_catalog) явно на нужном месте.
После окончания сеанса все объекты временной схемы удаляются,
а сама схема остается для повторного использования.
Есть и другие специальные схемы; они носят более технический
характер.