18
Локальный кеш
Для временных таблиц
видны только одному сеансу — нет смысла использовать общий кеш
существуют в пределах сеанса — не жалко потерять при сбое
Особенности
не требуются блокировки
память выделяется по необходимости в пределах temp_buffers
обычный алгоритм вытеснения
механизм буферных колец не используется
Исключением из общего правила являются временные таблицы.
Поскольку временные данные видны только одному процессу, им
нечего делать в общем буферном кеше. Более того, временные данные
существуют только в рамках одного сеанса, так что их не нужно
защищать от сбоя.
Для временных данных используется облегченный локальный кеш.
Поскольку локальный кеш доступен только одному процессу, для него
не требуются блокировки. Память выделяется по мере необходимости
(в пределах, заданных параметром temp_buffers), ведь временные
таблицы используются далеко не во всех сеансах. В локальном кеше
используется обычный алгоритм вытеснения.
Временные таблицы на физическом уровне хранятся схожим
с обычными таблицами образом. Параметр temp_tablespaces задает
табличные пространства, в которых будут создаваться временные
объекты (временные таблицы и индексы временных таблиц), когда
в команде CREATE табличное пространство не указывается явно.
Значение параметра temp_tablespaces может содержать список имен
табличных пространств. Когда этот список содержит больше одного
имени, PostgreSQL выбирает из него случайный элемент при создании
каждого временного объекта; однако при создании последующих
объектов внутри транзакции табличные пространства перебираются
последовательно. Если же в списке оказывается пустая строка
(значение по умолчанию), PostgreSQL будет использовать табличное
пространство по умолчанию для текущей базы данных.