Перейти к основному содержанию

Выполняется ли вставка в Materialized Views синхронно?

Вопрос: Когда в исходную таблицу вставляются новые строки, они также отправляются во все materialized view этой таблицы. Выполняются ли вставки в Materialized Views синхронно? Иными словами, если сервер успешно подтвердил вставку клиенту, значит ли это, что все Materialized Views уже полностью обновлены и доступны для запросов? Ответ:
  1. Если INSERT завершается успешно, данные вставляются и в таблицу, и во все materialized view.
  2. Вставка не является атомарной по отношению к materialized view. Пока INSERT выполняется, параллельные клиенты могут видеть промежуточное состояние: данные уже вставлены в основную таблицу, но еще не вставлены в materialized view, или наоборот.
  3. Если вы используете асинхронные вставки, они накапливают данные и затем выполняют обычную вставку, возвращая клиенту тот же тип ответа, что и при обычных вставках. Если клиент получил успешный ответ на асинхронную вставку с параметром wait_for_async_insert (по умолчанию это так), данные вставляются и в таблицу, и во все ее materialized view.
Вопрос: А как обстоит дело с цепочками/каскадами materialized view? Ответ: Действуют те же правила: успешный ответ на INSERT означает, что данные были вставлены в каждое materialized view в цепочке. Вставка неатомарна.
Последнее изменение 29 июня 2026 г.