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