DBCC PDW_SHOWMATERIALIZEDVIEWOVERHEAD (Transact-SQL)

Gilt für:Azure Synapse Analytics

Dies zeigt die Anzahl inkrementeller Änderungen in den Basistabellen an, die für die materialisierten Sichten in Azure Synapse Analytics gespeichert werden. Das Overheadverhältnis wird als TOTAL_ROWS / MAX (1, BASE_VIEW_ROWS) berechnet.

Transact-SQL-Syntaxkonventionen

Syntax

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

Hinweis

Diese Syntax wird vom serverlosen SQL-Pool in Azure Synapse Analytics nicht unterstützt.

Argumente

schema_name

Ist der Name des Schemas, zu dem die Sicht gehört

materialized_view_name

Der Name der materialisierten Sicht.

Hinweise

Die Data Warehouse-Engine fügt zu jeder betroffenen Sicht Nachverfolgungszeilen zur Darstellung der Änderungen hinzu, damit materialisierte Sichten stets mit Datenänderungen in Basistabellen aktualisiert werden. Die Auswahl einer materialisierten Sicht schließt das Überprüfen des gruppierten Columnstore-Index der Sicht und das Anwenden inkrementeller Änderungen ein.  Die Nachverfolgungszeilen (TOTAL_ROWS - BASE_VIEW_ROWS) werden erst gelöscht, wenn Benutzer*innen die materialisierte Sicht neu erstellen (REBUILD).

Das Overheadverhältnis wird als TOTAL_ROWS / MAX (1, BASE_VIEW_ROWS) berechnet. Wenn der Wert hoch ist, wird die SELECT-Leistung beeinträchtigt. Benutzer können die materialisierte Sicht neu erstellen, um das Overheadverhältnis zu verringern.

Berechtigungen

Erfordert die VIEW DATABASE STATE-Berechtigung

Beispiele

A. Dieses Beispiel gibt das Overheadverhältnis einer materialisierten Sicht zurück.

DBCC PDW_SHOWMATERIALIZEDVIEWOVERHEAD ("dbo.MyIndexedView");

Beispielausgabe:

OBJECT_ID BASE_VIEW_ROWS TOTAL_ROWS OVERHEAD_RATIO
1234 1 3 3.0

B. Dieses Beispiel zeigt, wie sich der Overhead der materialisierten Sicht vergrößert, wenn sich Daten in Basistabellen ändern.

Erstellen einer Tabelle:

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

Fügen Sie fünf Zeilen in t1 ein:

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

Erstellen Sie materialisierter Sichten (MV1):

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

Bei der Auswahl aus der materialisierten Sicht werden zwei Zeilen zurückgegeben.

c1 total_number
1 1
2 1

Überprüfen Sie vor der Änderung von Daten in der Basistabelle den Overhead der materialisierten Sicht.

DBCC PDW_SHOWMATERIALIZEDVIEWOVERHEAD ("dbo.mv1")

Beispielausgabe:

OBJECT_ID BASE_VIEW_ROWS TOTAL_ROWS OVERHEAD_RATIO
587149137 2 2 1,00000000000000000

Aktualisieren Sie die Basistabelle. Diese Abfrage aktualisiert dieselbe Spalte in derselben Zeile 100 mal mit demselben Wert. Der Inhalt der materialisierten Sicht ändert sich nicht.

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

Bei der Auswahl aus der materialisierten Sicht wird dasselbe Ergebnis wie zuvor zurückgegeben.

c1 total_number
1 1
2 1

Unten sehen Sie die Ausgabe von DBCC PDW_SHOWMATERIALIZEDVIEWOVERHEAD ("dbo.mv1"). Der materialisierten Sicht werden 100 Zeilen hinzugefügt (total_row - base_view_rows), und das Overheadverhältnis (overhead_ratio) wird erhöht.

OBJECT_ID BASE_VIEW_ROWS TOTAL_ROWS OVERHEAD_RATIO
587149137 2 102 51,00000000000000000

Nachdem die materialisierte Sicht neu erstellt wurde, werden alle Nachverfolgungszeilen für Änderungen inkrementeller Daten gelöscht, und das Overheadverhältnis der Sicht wird verringert.

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 |

Siehe auch