DBCC PDW_SHOWMATERIALIZEDVIEWOVERHEAD (Transact-SQL)

适用于:yesAzure Synapse Analytics

显示为 Azure Synapse Analytics 的具体化视图保留的基表的增量更改数。 按照 TOTAL_ROWS / MAX (1, BASE_VIEW_ROWS) 计算开销比率。

Topic link iconTransact-SQL 语法约定 (Transact-SQL)

语法

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

注意

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

参数

schema_name
视图所属架构的名称。

materialized_view_name
是具体化视图的名称。

备注

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

按照 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

另请参阅

利用具体化视图进行性能优化
CREATE MATERIALIZED VIEW AS SELECT (Transact-SQL)
ALTER MATERIALIZED VIEW (Transact-SQL)
EXPLAIN (Transact-SQL)
sys.pdw_materialized_view_column_distribution_properties (Transact-SQL)
sys.pdw_materialized_view_distribution_properties (Transact-SQL)
sys.pdw_materialized_view_mappings (Transact-SQL)
Azure Synapse Analytics 和并行数据仓库目录视图
Azure Synapse Analytics 中支持的系统视图
Azure Synapse Analytics 支持的 T-SQL 语句