DBCC PDW_SHOWMATERIALIZEDVIEWOVERHEAD (Transact-SQL)

Применимо к:Azure Synapse Analytics

Эта инструкция отображает количество добавочных изменений в базовых таблицах, которые хранятся в материализованных представлениях в службе Azure Synapse Analytics. Коэффициент затрат рассчитывается по следующей формуле: TOTAL_ROWS / MAX (1, BASE_VIEW_ROWS).

Соглашения о синтаксисе Transact-SQL

Синтаксис

DBCC PDW_SHOWMATERIALIZEDVIEWOVERHEAD ( "[ schema_name . ] materialized_view_name" )
[;]

Примечание

Этот синтаксис не поддерживается бессерверным пулом SQL в Azure Synapse Analytics.

Аргументы

schema_name

Имя схемы, к которой принадлежит представление.

materialized_view_name

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

Комментарии

Для сохранения материализованных представлений, обновляемых при изменении данных в базовых таблицах, подсистема хранилища данных добавляет отслеживаемые строки в каждое затронутое представление для отражения изменений. Выборка из материализованного представления предусматривает сканирование его кластеризованного индекса columnstore и применение всех дополнительных изменений.  Строки отслеживания (TOTAL_ROWS — BASE_VIEW_ROWS) не удаляются, пока пользователь не перестроит материализованное представление.

Overhead_ratio вычисляется как TOTAL_ROWS / MAX(1, BASE_VIEW_ROWS). Если значение высокое, производительность SELECT будет снижена. Пользователи могут перестроить материализованные представления, чтобы уменьшить коэффициент.

Разрешения

Требуется разрешение VIEW DATABASE STATE .

Примеры

A. Этот пример возвращает коэффициент накладных расходов для материализованного представления.

DBCC PDW_SHOWMATERIALIZEDVIEWOVERHEAD ("dbo.MyIndexedView");

Образец вывода:

OBJECT_ID BASE_VIEW_ROWS TOTAL_ROWS OVERHEAD_RATIO
1 234 1 3 3.0

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

Создайте таблицу:

CREATE TABLE t1 (c1 INT NOT NULL, c2 INT NOT NULL, c3 INT NOT NULL);

Вставьте пять строк в t1:

INSERT INTO t1 VALUES (1, 1, 1);
INSERT INTO t1 VALUES (2, 2, 2);
INSERT INTO t1 VALUES (3, 3, 3);
INSERT INTO t1 VALUES (4, 4, 4);
INSERT INTO t1 VALUES (5, 5, 5);

Создание материализованных представлений MV1:

CREATE MATERIALIZED VIEW MV1
WITH (DISTRIBUTION = HASH(c1))
AS
SELECT c1, COUNT(*) total_number
FROM dbo.t1 WHERE c1 < 3
GROUP BY c1;

Выборка из материализованного представления возвращает две строки.

c1 total_number
1 1
2 1

Проверка издержек материализованного представления перед изменением данных в базовой таблице.

DBCC PDW_SHOWMATERIALIZEDVIEWOVERHEAD ("dbo.mv1")

Образец вывода:

OBJECT_ID BASE_VIEW_ROWS TOTAL_ROWS OVERHEAD_RATIO
587149137 2 2 1.00000000000000000

Обновление базовой таблицы. Этот запрос обновляет один и тот же столбец в одной строке 100 раз одним и тем же значением. Содержимое материализованного представления не изменяется.

DECLARE @p INT;
SELECT @p = 1;
WHILE (@p < 101)
BEGIN
    UPDATE t1 SET c1 = 1 WHERE c1 = 1;
    SELECT @p = @p + 1;
END;

Выборка из материализованного представления возвращает тот же результат.

c1 total_number
1 1
2 1

Ниже приведены выходные данные из DBCC PDW_SHOWMATERIALIZEDVIEWOVERHEAD ("dbo.mv1"). В материализованное представление (total_row-base_view_rows) добавлено 100 строк, и его overhead_ratio увеличивается.

OBJECT_ID BASE_VIEW_ROWS TOTAL_ROWS OVERHEAD_RATIO
587149137 2 102 51.00000000000000000

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

ALTER MATERIALIZED VIEW dbo.MV1 REBUILD
GO
DBCC PDW_SHOWMATERIALIZEDVIEWOVERHEAD ("dbo.mv1")

Выходные данные

| OBJECT_ID | BASE_VIEW_ROWS | TOTAL_ROWS | OVERHEAD_RATIO |
| --- | --- | --- | --- |
| 587149137 | 2 | 2 | 1.00000000000000000 |

См. также