Sdílet prostřednictvím


DBCC PDW_SHOWMATERIALIZEDVIEWOVERHEAD (Transact-SQL)

platí pro:azure Synapse Analytics

Zobrazí počet přírůstkových změn v základních tabulkách uložených pro materializovaná zobrazení ve službě Azure Synapse Analytics. Poměr režie se vypočítá jako TOTAL_ROWS / MAX (1, BASE_VIEW_ROWS).

Transact-SQL konvence syntaxe

Syntax

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

Poznámka

Tato syntaxe není podporována bezserverovým fondem SQL ve službě Azure Synapse Analytics.

Argumenty

schema_name

Název schématu, do kterého zobrazení patří.

materialized_view_name

Název materializovaného zobrazení

Poznámky

Aby se materializovaná zobrazení aktualizovala o změny dat v základních tabulkách, modul datového skladu přidá do každého ovlivněného zobrazení sledovací řádky, aby odrážel změny. Výběr z materializovaného zobrazení zahrnuje skenování clusterovaného indexu columnstore zobrazení a použití jakýchkoli přírůstkových změn.  Řádky sledování (TOTAL_ROWS – BASE_VIEW_ROWS) se neodstraní, dokud uživatelé znovu sestaví materializované zobrazení.

Overhead_ratio se vypočítá jako TOTAL_ROWS / MAX(1, BASE_VIEW_ROWS). Pokud je vysoká, výkon SELECT se sníží. Uživatelé mohou znovu sestavit materializované zobrazení, aby snížili jeho režijní poměr.

Dovolení

Vyžaduje oprávnění ZOBRAZIT STAV DATABÁZE.

Příklady

A. Tento příklad vrátí režijní poměr materializovaného zobrazení.

DBCC PDW_SHOWMATERIALIZEDVIEWOVERHEAD ("dbo.MyIndexedView");

Ukázkový výstup:

OBJECT_ID BASE_VIEW_ROWS TOTAL_ROWS OVERHEAD_RATIO
1234 1 3 3.0

B. Tento příklad ukazuje, jak se při změnách dat v základních tabulkách zvyšuje režijní náklady na materializované zobrazení.

Vytvoření tabulky:

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

Vložte do t1pět řádků:

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);

Vytvoření materializovaných zobrazení MV1:

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

Výběr z materializovaného zobrazení vrátí dva řádky.

c1 total_number
1 1
2 1

Před změnami dat v základní tabulce zkontrolujte režii materializovaného zobrazení.

DBCC PDW_SHOWMATERIALIZEDVIEWOVERHEAD ("dbo.mv1")

Ukázkový výstup:

OBJECT_ID BASE_VIEW_ROWS TOTAL_ROWS OVERHEAD_RATIO
587149137 2 2 1.00000000000000000

Aktualizujte základní tabulku. Tento dotaz aktualizuje stejný sloupec ve stejném řádku 100krát na stejnou hodnotu. Materializovaný obsah zobrazení se nezmění.

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

Výběr z materializovaného zobrazení vrátí stejný výsledek jako předtím.

c1 total_number
1 1
2 1

Níže je výstup z DBCC PDW_SHOWMATERIALIZEDVIEWOVERHEAD ("dbo.mv1"). Do materializovaného zobrazení (total_row – base_view_rows) se přidá 100 řádků a jeho overhead_ratio se zvýší.

OBJECT_ID BASE_VIEW_ROWS TOTAL_ROWS OVERHEAD_RATIO
587149137 2 102 51.00000000000000000

Po opětovném sestavení materializovaného zobrazení se eliminují všechny řádky sledování přírůstkových změn dat a sníží se poměr režie zobrazení.

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

Výstup

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

Viz také