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" )
[;]

注意

Azure Synapse Analytics 中的无服务器 SQL 池不支持此语法。

参数

schema_name

视图所属架构的名称。

materialized_view_name

具体化视图的名称。

备注

为了使具体化视图与基表中的数据更改同步刷新,数据仓库引擎会将跟踪行添加到每个受影响的视图以反映所做的更改。 从具体化视图选择包括扫描具体化视图的聚集列存储索引,并应用所有增量更改。  在用户重新生成具体化视图之前,不会删除跟踪行 (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
1234 1 3 3.0

B. 此示例显示了随着基表中的数据更改,具体化视图开销增加的情况

创建表:

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 |

另请参阅