Перейти к основному содержимому
Версия: 2.0.x

Асинхронные материализованные представления

В этом разделе описывается, как понимать, создавать, использовать и управлять асинхронным материализованным представлением. Асинхронные материализованные представления поддерживаются начиная с Selena v1.5.2.

По сравнению с синхронными материализованными представлениями, асинхронные материализованные представления поддерживают соединение нескольких таблиц и больше агрегатных функций. Обновление асинхронных материализованных представлений может быть запущено вручную, регулярно через заданные интервалы или автоматически при изменении данных в базовой таблице. Вы также можете обновлять некоторые партиции вместо всего материализованного представления, что значительно снижает стоимость обновления. Кроме того, асинхронные материализованные представления поддерживают различные сценарии перезаписи запросов, позволяя автоматическое и прозрачное ускорение запросов.

Для сценария и использования синхронных материализованных представлений (Rollup) см. Синхронное материализованное представление (Rollup).

Обзор

Приложения в базах данных часто выполняют сложные запросы к большим таблицам. Такие запросы включают соединения нескольких таблиц и агрегации таблиц, содержащих миллиарды строк. Обработка этих запросов может быть дорогостоящей с точки зрения системных ресурсов и времени, необходимого для вычисления результатов.

Асинхронные материализованные представления в Selena предназначены для решения этих проблем. Асинхронное материализованное представление — это специальная физическая таблица, которая хранит предварительно вычисленные результаты запроса из одной или нескольких базовых таблиц. Когда вы выполняете сложные запросы к базовой таблице, Selena возвращает предварительно вычисленные результаты из соответствующих материализованных представлений для обработки этих запросов. Таким образом, производительность запросов может быть улучшена, поскольку избегаются повторяющиеся сложные вычисления. Эта разница в производительности может быть значительной, когда запрос выполняется часто или достаточно сложен.

Кроме того, асинхронные материализованные представления особенно полезны для построения математических моделей на основе вашего хранилища данных. Таким образом, вы можете предоставить единую спецификацию данных для приложений верхнего уровня, защитить базовую реализацию или обеспечить безопасность необработанных данных базовых таблиц.

Понимание материализованных представлений в Selena

Selena v1.5.2 и более ранние версии предоставляли синхронное материализованное представление, которое можно было построить только на одной таблице. Синхронные материализованные представления, или Rollup, сохраняют большую свежесть данных и более низкие затраты на обновление. Однако по сравнению с асинхронными материализованными представлениями, поддерживаемыми начиная с v1.5.2, синхронные материализованные представления имеют много ограничений. У вас есть ограниченный выбор операторов агрегации, когда вы хотите построить синхронное материализованное представление для ускорения или перезаписи ваших запросов.

В следующей таблице сравниваются асинхронные материализованные представления (ASYNC MV) и синхронные материализованные представления (SYNC MV) в Selena с точки зрения поддерживаемых функций:

Агрегация одной таблицыСоединение нескольких таблицПерезапись запросовСтратегия обновленияБазовая таблица
ASYNC MVДаДаДа
  • Асинхронное обновление
  • Ручное обновление
Несколько таблиц из:
  • Default catalog
  • Внешние каталоги (v1.5.2)
  • Существующие материализованные представления (v1.5.2)
  • Существующие представления (v1.5.2)
SYNC MV (Rollup)Ограниченный выбор агрегатных функцийНетДаСинхронное обновление при загрузке данныхОдна таблица в default catalog

Основные понятия

  • Базовая таблица

    Базовые таблицы являются управляющими таблицами материализованного представления.

    Для асинхронных материализованных представлений Selena базовыми таблицами могут быть собственные таблицы Selena в default catalog, таблицы во внешних каталогах (поддерживается с v1.5.2) или даже существующие асинхронные материализованные представления (поддерживается с v1.5.2) и представления (поддерживается с v1.5.2). Selena поддерживает создание асинхронных материализованных представлений на всех типах таблиц Selena.

  • Обновление

    При создании асинхронного материализованного представления его данные отражают только состояние базовых таблиц на тот момент. Когда данные в базовых таблицах изменяются, вам нужно обновить материализованное представление, чтобы синхронизировать изменения.

    В настоящее время Selena поддерживает две общие стратегии обновления:

    • ASYNC: Режим асинхронного обновления. Материализованные представления могут обновляться автоматически при изменении данных в базовой таблице или через регулярные интервалы на основе указанных интервалов.
    • MANUAL: Режим ручного обновления. Материализованное представление не будет автоматически обновляться. Задачи обновления могут быть запущены только вручную пользователями.
  • Перезапись запросов

    Перезапись запросов означает, что при выполнении запроса к базовым таблицам с построенными на них материализованными представлениями система автоматически определяет, могут ли быть повторно использованы предварительно вычисленные результаты в материализованном представлении для запроса. Если они могут быть повторно использованы, система загрузит данные напрямую из соответствующего материализованного представления, чтобы избежать трудоемких и ресурсоемких вычислений или соединений.

    Начиная с v1.5.2, Selena поддерживает автоматическую, прозрачную перезапись запросов на основе асинхронных материализованных представлений типа SPJG. Материализованные представления типа SPJG относятся к материализованным представлениям, план которых включает только операторы типа Scan, Filter, Project и Aggregate.

    ПРИМЕЧАНИЕ

    Асинхронные материализованные представления, созданные на базовых таблицах в JDBC catalog или Hudi catalog, не поддерживают перезапись запросов.

Определение, когда создавать материализованное представление

Вы можете создать асинхронное материализованное представление, если у вас есть следующие требования в вашей среде хранилища данных:

  • Ускорение запросов с повторяющимися агрегатными функциями

    Предположим, что большинство запросов в вашем хранилище данных включают один и тот же подзапрос с агрегатной функцией, и эти запросы потребляли огромную долю ваших вычислительных ресурсов. На основе этого подзапроса вы можете создать асинхронное материализованное представление, которое будет вычислять и хранить все результаты подзапроса. После создания материализованного представления Selena переписывает все запросы, содержащие подзапрос, загружает промежуточные результаты, хранящиеся в материализованном представлении, и таким образом ускоряет эти запросы.

  • Регулярное соединение нескольких таблиц

    Предположим, что вам нужно регулярно соединять несколько таблиц в вашем хранилище данных, чтобы создать новую широкую таблицу. Вы можете построить асинхронное материализованное представление для этих таблиц и установить стратегию обновления ASYNC, которая запускает задачи обновления через фиксированный временной интервал. После создания материализованного представления результаты запроса возвращаются напрямую из материализованного представления, и таким образом избегается задержка, вызванная операциями JOIN.

  • Послойное хранилище данных

    Предположим, что ваше хранилище данных содержит массу необработанных данных, и запросы в нем требуют сложного набора операций ETL. Вы можете построить несколько уровней асинхронных материализованных представлений для стратификации данных в вашем хранилище данных и таким образом разбить запрос на серию простых подзапросов. Это может значительно сократить повторяющиеся вычисления и, что более важно, помочь вашему администратору баз данных легко и эффективно выявлять проблемы. Кроме того, послойное хранилище данных помогает разделить необработанные данные и статистические данные, защищая безопасность конфиденциальных необработанных данных.

  • Ускорение запросов в озерах данных

    Запросы к озеру данных могут быть медленными из-за задержки сети и пропускной способности объектного хранилища. Вы можете повысить производительность запросов, построив асинхронное материализованное представление поверх озера данных. Более того, Selena может интеллектуально переписывать запросы для использования существующих материализованных представлений, избавляя вас от необходимости изменять запросы вручную.

Для конкретных случаев использования асинхронных материализованных представлений обратитесь к следующему содержанию:

Создание асинхронного материализованного представления

Асинхронные материализованные представления Selena могут быть созданы на следующих базовых таблицах:

  • Собственные таблицы Selena (поддерживаются все типы таблиц Selena)
  • Таблицы во внешних каталогах
  • Существующие асинхронные материализованные представления (с v1.5.2)
  • Существующие представления (с v1.5.2)

Прежде чем начать

Следующие примеры включают две базовые таблицы в default catalog:

  • Таблица goods записывает идентификатор товара item_id1, название товара item_name и цену товара price.
  • Таблица order_list записывает идентификатор заказа order_id, идентификатор клиента client_id, идентификатор товара item_id2 и дату заказа order_date.

Столбец goods.item_id1 эквивалентен столбцу order_list.item_id2.

Выполните следующие инструкции для создания таблиц и вставки данных в них:

CREATE TABLE goods(
item_id1 INT,
item_name STRING,
price FLOAT
) DISTRIBUTED BY HASH(item_id1);

INSERT INTO goods
VALUES
(1001,"apple",6.5),
(1002,"pear",8.0),
(1003,"potato",2.2);

CREATE TABLE order_list(
order_id INT,
client_id INT,
item_id2 INT,
order_date DATE
) DISTRIBUTED BY HASH(order_id);

INSERT INTO order_list
VALUES
(10001,101,1001,"2022-03-13"),
(10001,101,1002,"2022-03-13"),
(10002,103,1002,"2022-03-13"),
(10002,103,1003,"2022-03-14"),
(10003,102,1003,"2022-03-14"),
(10003,102,1001,"2022-03-14");

Сценарий в следующем примере требует частых вычислений суммы каждого заказа. Он требует частых соединений двух базовых таблиц и интенсивного использования агрегатной функции sum(). Кроме того, бизнес-сценарий требует обновления данных с интервалом в один день.

Инструкция запроса следующая:

SELECT
order_id,
sum(goods.price) as total
FROM order_list INNER JOIN goods ON goods.item_id1 = order_list.item_id2
GROUP BY order_id;

Создание материализованного представления

Вы можете создать материализованное представление на основе определенной инструкции запроса, используя CREATE MATERIALIZED VIEW.

На основе таблиц goods, order_list и приведенной выше инструкции запроса следующий пример создает материализованное представление order_mv для анализа суммы каждого заказа. Материализованное представление настроено на обновление с интервалом в один день.

CREATE MATERIALIZED VIEW order_mv
DISTRIBUTED BY HASH(`order_id`)
REFRESH ASYNC START('2022-09-01 10:00:00') EVERY (interval 1 day)
AS SELECT
order_list.order_id,
sum(goods.price) as total
FROM order_list INNER JOIN goods ON goods.item_id1 = order_list.item_id2
GROUP BY order_id;

ПРИМЕЧАНИЕ

  • При создании асинхронного материализованного представления вы должны указать либо стратегию распределения данных, либо стратегию обновления материализованного представления, либо и то, и другое.
  • Вы можете установить различные стратегии партиционирования и баскетинга для асинхронного материализованного представления, отличные от базовых таблиц, но вы должны включить ключи партиций и ключи баскетов материализованных представлений в инструкцию запроса, используемую для создания материализованного представления.
  • Асинхронные материализованные представления поддерживают стратегию динамического партиционирования с более длинным интервалом. Например, если базовая таблица партиционирована с интервалом в один день, вы можете установить материализованное представление для партиционирования с интервалом в один месяц.
  • Начиная с v1.5.2, Selena поддерживает создание асинхронных материализованных представлений со стратегией List Partitioning.
    • Вы можете создавать материализованные представления с list-партиционированием на основе таблиц, созданных со стратегией List Partitioning или Expression partitioning.
    • В настоящее время вы можете указать только один Partition Key при создании материализованных представлений со стратегией List Partitioning. Вы должны выбрать один Partition Key, если базовая таблица имеет более одного Partition Key.
    • Поведение обновления и логика перезаписи запросов материализованных представлений со стратегией List Partitioning согласуются с теми, которые имеют стратегию Range Partitioning.
  • Инструкция запроса, используемая для создания материализованного представления, не поддерживает случайные функции, включая rand(), random(), uuid() и sleep().
  • Асинхронные материализованные представления поддерживают различные типы данных. Для получения дополнительной информации см. CREATE MATERIALIZED VIEW - Поддерживаемые типы данных.
  • По умолчанию выполнение инструкции CREATE MATERIALIZED VIEW немедленно запускает задачу обновления, которая может потреблять определенную долю системных ресурсов. Если вы хотите отложить задачу обновления, вы можете добавить параметр REFRESH DEFERRED в свою инструкцию CREATE MATERIALIZED VIEW.
  • Материализованное представление может быть создано только в default_catalog. Вы можете создать его с помощью default_catalog.database.mv или переключиться на default_catalog с помощью инструкции set catalog <default_catalog>.
  • О механизмах обновления асинхронных материализованных представлений

    В настоящее время Selena поддерживает две стратегии обновления ON DEMAND: MANUAL refresh и ASYNC refresh.

    В Selena v1.5.2 асинхронные материализованные представления дополнительно поддерживают различные механизмы асинхронного обновления для контроля стоимости обновления и повышения скорости успеха:

    • Если MV имеет много больших партиций, каждое обновление может потреблять большое количество ресурсов. В v1.5.2 Selena поддерживает разделение задач обновления. Вы можете указать максимальное количество партиций для обновления, и Selena выполняет обновление пакетами, с размером пакета меньшим или равным указанному максимальному количеству партиций. Эта функция обеспечивает стабильное обновление больших асинхронных материализованных представлений, повышая стабильность и надежность моделирования данных.
    • Вы можете указать срок жизни (TTL) для партиций асинхронного материализованного представления, уменьшая размер хранилища, занимаемый материализованным представлением.
    • Вы можете указать диапазон обновления для обновления только последних нескольких партиций, уменьшая накладные расходы на обновление.
    • Вы можете указать базовые таблицы, где изменения данных не будут автоматически запускать обновление соответствующего материализованного представления.
    • Вы можете назначить группу ресурсов задаче обновления.

    Для получения дополнительной информации см. раздел PROPERTIES в CREATE MATERIALIZED VIEW - Параметры. Вы также можете изменить механизмы существующего асинхронного материализованного представления, используя ALTER MATERIALIZED VIEW.

    ВНИМАНИЕ

    Чтобы предотвратить полное обновление операций от исчерпания системных ресурсов и вызова сбоев задач, рекомендуется создавать партиционированные материализованные представления на основе партиционированных базовых таблиц. Это гарантирует, что когда происходят обновления данных в партиции базовой таблицы, обновляется только соответствующая партиция материализованного представления, а не все материализованное представление. Для получения дополнительной информации см. Моделирование данных с материализованными представлениями - Партиционированное моделирование.

  • О вложенных материализованных представлениях

    Selena v1.5.2 поддерживает создание вложенных асинхронных материализованных представлений. Вы можете строить асинхронные материализованные представления на основе существующих асинхронных материализованных представлений. Стратегия обновления для каждого материализованного представления не влияет на материализованные представления на верхних или нижних уровнях. В настоящее время Selena не ограничивает количество уровней вложенности. В производственной среде мы рекомендуем, чтобы количество уровней вложенности не превышало ТРЕХ.

  • О материализованных представлениях внешнего каталога

    Selena поддерживает построение асинхронных материализованных представлений на основе Hive Catalog (с v1.5.2), Hudi Catalog (с v1.5.2), Iceberg Catalog (с v1.5.2) и JDBC Catalog (с v1.5.2). Создание материализованного представления во внешних каталогах похоже на создание асинхронного материализованного представления в default catalog, но с некоторыми ограничениями использования. Для получения дополнительной информации см. Ускорение запросов к озерам данных с материализованными представлениями.

Ручное обновление асинхронного материализованного представления

Вы можете обновить асинхронное материализованное представление независимо от его стратегии обновления с помощью REFRESH MATERIALIZED VIEW. Selena v1.5.2 поддерживает обновление определенных партиций асинхронного материализованного представления путем указания имен партиций. Selena v1.5.2 поддерживает синхронный вызов задачи обновления, и инструкция SQL возвращается только тогда, когда задача успешно выполнена или не удалась.

-- Обновление материализованного представления через асинхронный вызов (по умолчанию).
REFRESH MATERIALIZED VIEW order_mv;
-- Обновление материализованного представления через синхронный вызов.
REFRESH MATERIALIZED VIEW order_mv WITH SYNC MODE;

Вы можете отменить задачу обновления, отправленную через асинхронный вызов, используя CANCEL REFRESH MATERIALIZED VIEW.

Прямой запрос к асинхронному материализованному представлению

Созданное вами асинхронное материализованное представление по сути является физической таблицей, которая содержит полный набор предварительно вычисленных результатов в соответствии с инструкцией запроса. Следовательно, вы можете напрямую запрашивать материализованное представление после того, как материализованное представление будет обновлено в первый раз.

MySQL > SELECT * FROM order_mv;
+----------+--------------------+
| order_id | total |
+----------+--------------------+
| 10001 | 14.5 |
| 10002 | 10.200000047683716 |
| 10003 | 8.700000047683716 |
+----------+--------------------+
3 rows in set (0.01 sec)

ПРИМЕЧАНИЕ

Вы можете напрямую запрашивать асинхронное материализованное представление, но результаты могут быть несогласованными с тем, что вы получаете из запроса к его базовым таблицам.

Перезапись и ускорение запросов с помощью асинхронного материализованного представления

Selena v1.5.2 поддерживает автоматическую и прозрачную перезапись запросов на основе асинхронных материализованных представлений типа SPJG. Перезапись запросов материализованных представлений типа SPJG включает перезапись запросов к одной таблице, перезапись запросов Join, перезапись запросов агрегации, перезапись запросов Union и перезапись запросов на основе вложенных материализованных представлений. Начиная с v1.5.2, Selena дополнительно поддерживает текстовую перезапись материализованных представлений. Для получения дополнительной информации см. Перезапись запросов с материализованными представлениями.

В настоящее время Selena поддерживает перезапись запросов к асинхронным материализованным представлениям, которые созданы в default catalog или внешнем каталоге, таком как Hive catalog, Hudi catalog или Iceberg catalog. При запросе данных в default catalog Selena обеспечивает строгую согласованность результатов между переписанным запросом и исходным запросом, исключая материализованные представления, данные которых несовместимы с базовой таблицей. Когда данные в материализованном представлении устаревают, материализованное представление не будет использоваться в качестве кандидата материализованного представления. При запросе данных во внешних каталогах Selena не обеспечивает строгую согласованность результатов, поскольку Selena не может воспринимать изменения данных во внешних каталогах. Для получения дополнительной информации об асинхронных материализованных представлениях, созданных на основе внешнего каталога, см. Ускорение запросов к озерам данных с материализованными представлениями.

ПРИМЕЧАНИЕ

Асинхронные материализованные представления, созданные на базовых таблицах в JDBC catalog, не поддерживают перезапись запросов.

Управление асинхронным материализованным представлением

Изменение асинхронного материализованного представления

Вы можете изменить свойство асинхронного материализованного представления, используя ALTER MATERIALIZED VIEW.

  • Активировать неактивное материализованное представление.

    ALTER MATERIALIZED VIEW order_mv ACTIVE;
  • Переименовать асинхронное материализованное представление.

    ALTER MATERIALIZED VIEW order_mv RENAME order_total;
  • Изменить интервал обновления асинхронного материализованного представления на 2 дня.

    ALTER MATERIALIZED VIEW order_mv REFRESH ASYNC EVERY(INTERVAL 2 DAY);

Показать асинхронные материализованные представления

Вы можете просмотреть асинхронные материализованные представления в вашей базе данных, используя SHOW MATERIALIZED VIEWS или запрашивая системное представление метаданных в Information Schema.

  • Проверить все асинхронные материализованные представления в вашей базе данных.

    SHOW MATERIALIZED VIEWS;
  • Проверить конкретное асинхронное материализованное представление.

    SHOW MATERIALIZED VIEWS WHERE NAME = "order_mv";
  • Проверить конкретные асинхронные материализованные представления путем сопоставления имени.

    SHOW MATERIALIZED VIEWS WHERE NAME LIKE "order%";
  • Проверить все асинхронные материализованные представления, запросив представление метаданных materialized_views в Information Schema. Для получения дополнительной информации см. information_schema.materialized_views.

    SELECT * FROM information_schema.materialized_views;

Проверка определения асинхронного материализованного представления

Вы можете проверить запрос, используемый для создания асинхронного материализованного представления, с помощью SHOW CREATE MATERIALIZED VIEW.

SHOW CREATE MATERIALIZED VIEW order_mv;

Проверка статуса выполнения асинхронного материализованного представления

Вы можете проверить статус выполнения (создание или обновление) асинхронного материализованного представления, запросив tasks и task_runs в Information Schema.

Следующий пример проверяет статус выполнения материализованного представления, которое было создано последним:

  1. Проверьте TASK_NAME самой последней задачи в таблице tasks.

    mysql> select * from information_schema.tasks  order by CREATE_TIME desc limit 1\G;
    *************************** 1. row ***************************
    TASK_NAME: mv-59299
    CREATE_TIME: 2022-12-12 17:33:51
    SCHEDULE: MANUAL
    DATABASE: ssb_1
    DEFINITION: insert overwrite hive_mv_lineorder_flat_1 SELECT `hive_ci`.`dla_scan`.`lineorder_flat_1000_1000_orc`.`lo_orderkey`, `hive_ci`.`dla_scan`.`lineorder_flat_1000_1000_orc`.`lo_linenumber`, `hive_ci`.`dla_scan`.`lineorder_flat_1000_1000_orc`.`lo_custkey`, `hive_ci`.`dla_scan`.`lineorder_flat_1000_1000_orc`.`lo_partkey`, `hive_ci`.`dla_scan`.`lineorder_flat_1000_1000_orc`.`lo_orderpriority`, `hive_ci`.`dla_scan`.`lineorder_flat_1000_1000_orc`.`lo_ordtotalprice`, `hive_ci`.`dla_scan`.`lineorder_flat_1000_1000_orc`.`lo_revenue`, `hive_ci`.`dla_scan`.`lineorder_flat_1000_1000_orc`.`p_mfgr`, `hive_ci`.`dla_scan`.`lineorder_flat_1000_1000_orc`.`s_nation`, `hive_ci`.`dla_scan`.`lineorder_flat_1000_1000_orc`.`c_city`, `hive_ci`.`dla_scan`.`lineorder_flat_1000_1000_orc`.`c_nation`, `hive_ci`.`dla_scan`.`lineorder_flat_1000_1000_orc`.`lo_orderdate`
    FROM `hive_ci`.`dla_scan`.`lineorder_flat_1000_1000_orc`
    WHERE `hive_ci`.`dla_scan`.`lineorder_flat_1000_1000_orc`.`lo_orderdate` = '1997-01-01'
    EXPIRE_TIME: NULL
    1 row in set (0.02 sec)
  2. Проверьте статус выполнения в таблице task_runs, используя найденный TASK_NAME.

    mysql> select * from information_schema.task_runs where task_name='mv-59299' order by CREATE_TIME\G
    *************************** 1. row ***************************
    QUERY_ID: d9cef11f-7a00-11ed-bd90-00163e14767f
    TASK_NAME: mv-59299
    CREATE_TIME: 2022-12-12 17:39:19
    FINISH_TIME: 2022-12-12 17:39:22
    STATE: SUCCESS
    DATABASE: ssb_1
    DEFINITION: insert overwrite hive_mv_lineorder_flat_1 SELECT `hive_ci`.`dla_scan`.`lineorder_flat_1000_1000_orc`.`lo_orderkey`, `hive_ci`.`dla_scan`.`lineorder_flat_1000_1000_orc`.`lo_linenumber`, `hive_ci`.`dla_scan`.`lineorder_flat_1000_1000_orc`.`lo_custkey`, `hive_ci`.`dla_scan`.`lineorder_flat_1000_1000_orc`.`lo_partkey`, `hive_ci`.`dla_scan`.`lineorder_flat_1000_1000_orc`.`lo_orderpriority`, `hive_ci`.`dla_scan`.`lineorder_flat_1000_1000_orc`.`lo_ordtotalprice`, `hive_ci`.`dla_scan`.`lineorder_flat_1000_1000_orc`.`lo_revenue`, `hive_ci`.`dla_scan`.`lineorder_flat_1000_1000_orc`.`p_mfgr`, `hive_ci`.`dla_scan`.`lineorder_flat_1000_1000_orc`.`s_nation`, `hive_ci`.`dla_scan`.`lineorder_flat_1000_1000_orc`.`c_city`, `hive_ci`.`dla_scan`.`lineorder_flat_1000_1000_orc`.`c_nation`, `hive_ci`.`dla_scan`.`lineorder_flat_1000_1000_orc`.`lo_orderdate`
    FROM `hive_ci`.`dla_scan`.`lineorder_flat_1000_1000_orc`
    WHERE `hive_ci`.`dla_scan`.`lineorder_flat_1000_1000_orc`.`lo_orderdate` = '1997-01-01'
    EXPIRE_TIME: 2022-12-15 17:39:19
    ERROR_CODE: 0
    ERROR_MESSAGE: NULL
    PROGRESS: 100%
    2 rows in set (0.02 sec)

Удаление асинхронного материализованного представления

Вы можете удалить асинхронное материализованное представление с помощью DROP MATERIALIZED VIEW.

DROP MATERIALIZED VIEW order_mv;

Связанные переменные сеанса

Следующие переменные управляют поведением асинхронного материализованного представления:

  • analyze_mv: Выполнять ли и как анализировать материализованное представление после обновления. Допустимые значения — пустая строка (Не анализировать), sample (Выборочный сбор статистики) и full (Полный сбор статистики). По умолчанию sample.