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) явно на нужном месте.
После окончания сеанса все объекты временной схемы удаляются,
а сама схема остается для повторного использования.
Есть и другие специальные схемы; они носят более технический
характер.