Condividi tramite


DBCC PDW_SHOWMATERIALIZEDVIEWOVERHEAD (Transact-SQL)

Si applica a: Azure Synapse Analytics

Visualizza il numero di modifiche incrementali nelle tabelle di base che vengono mantenute per le viste materializzate in Azure Synapse Analytics. Il rapporto di overhead viene calcolato come TOTAL_ROWS / MAX (1, BASE_VIEW_ROWS).

Convenzioni relative alla sintassi Transact-SQL

Sintassi

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

Nota

Questa sintassi non è supportata da pool SQL serverless in Azure Synapse Analytics.

Argomenti

schema_name

Nome dello schema a cui appartiene la vista.

materialized_view_name

Nome della vista materializzata.

Osservazioni:

Per mantenere aggiornate le viste materializzate in base alle modifiche ai dati nelle tabelle di base, il motore del data warehouse aggiunge righe di rilevamento a ogni vista interessata per riflettere le modifiche. La selezione da una vista materializzata include l'analisi dell'indice columnstore cluster della vista e l'applicazione di modifiche incrementali.  Le righe di rilevamento (TOTAL_ROWS - BASE_VIEW_ROWS) non vengono eliminate finché gli utenti ricompilano la visualizzazione materializzata.

Il overhead_ratio viene calcolato come TOTAL_ROWS / MAX(1, BASE_VIEW_ROWS). Se è alto, le prestazioni di SELECT risulteranno ridotte. Gli utenti possono ricompilare la vista materializzata per ridurre il relativo rapporto di overhead.

Autorizzazioni

È richiesta l'autorizzazione VIEW DATABASE STATE .

Esempi

R. Questo esempio restituisce il rapporto di overhead di una vista materializzata.

DBCC PDW_SHOWMATERIALIZEDVIEWOVERHEAD ("dbo.MyIndexedView");

Output di esempio:

OBJECT_ID BASE_VIEW_ROWS TOTAL_ROWS OVERHEAD_RATIO
1234 1 3 3.0

B. Questo esempio mostra come l'overhead della vista materializzata aumenta per effetto delle modifiche ai dati nelle tabelle di base

Creare una tabella:

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

Inserire cinque righe in 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);

Creare viste materializzate MV1:

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

La selezione dalla vista materializzata restituisce due righe.

c1 total_number
1 1
2 1

Controllare l'overhead della vista materializzata prima di eventuali modifiche ai dati nella tabella di base.

DBCC PDW_SHOWMATERIALIZEDVIEWOVERHEAD ("dbo.mv1")

Output di esempio:

OBJECT_ID BASE_VIEW_ROWS TOTAL_ROWS OVERHEAD_RATIO
587149137 2 2 1.00000000000000000

Aggiornare la tabella di base. Questa query aggiorna 100 volte la stessa colonna nella stessa riga impostando lo stesso valore. Il contenuto della visualizzazione materializzata non cambia.

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

La selezione dalla vista materializzata restituisce lo stesso risultato dell'esempio precedente.

c1 total_number
1 1
2 1

Di seguito è riportato l'output di DBCC PDW_SHOWMATERIALIZEDVIEWOVERHEAD ("dbo.mv1"). Alla vista materializzata sono state aggiunte 100 righe (total_row - base_view_rows) e il relativo valore di overhead_ratio è aumentato.

OBJECT_ID BASE_VIEW_ROWS TOTAL_ROWS OVERHEAD_RATIO
587149137 2 102 51.00000000000000000

Dopo la ricompilazione della vista materializzata, vengono eliminate tutte le righe di rilevamento per le modifiche incrementali ai dati e il rapporto di overhead della vista viene ridotto.

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

Output

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

Vedi anche