分享方式:


DBCC PDW_SHOWMATERIALIZEDVIEWOVERHEAD (Transact-SQL)

適用於:Azure Synapse Analytics

顯示基底資料表中針對 Azure Synapse Analytics 中具體化檢視所保留的遞增變更數目。 額外負荷率的計算方式為 TOTAL_ROWS / MAX (1, BASE_VIEW_ROWS)。

Transact-SQL 語法慣例

Syntax

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

注意

Azure Synapse Analytics 的無伺服器 SQL 集區不支援此語法。

引數

schema_name

檢視所屬的結構描述名稱。

materialized_view_name

具體化檢視的名稱。

備註

資料倉儲引擎會將追蹤資料列新增至每個受影響檢視以反映所做的變更,以便隨即重新整理具體化檢視。 從具體化檢視選取包括掃描檢視的叢集資料行存放區索引,以及套用這些增量變更。  追蹤資料列 (TOTAL_ROWS-BASE_VIEW_ROWS) 在使用者 REBUILD 具體化檢視之前不會遭到刪除。

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") 的輸出。 具體化檢視中會新增 100 個資料列 (total_row - base_view_rows),且 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 |

另請參閱