Partilhar via


DBCC PDW_SHOWMATERIALIZEDVIEWOVERHEAD (Transact-SQL)

Aplica-se a: Azure Synapse Analytics

Exibe o número de alterações incrementais nas tabelas de base mantidas para exibições materializadas no Azure Synapse Analytics. A taxa de sobrecarga é calculada como TOTAL_ROWS / MAX (1, BASE_VIEW_ROWS).

Convenções de sintaxe Transact-SQL

Sintaxe

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

Observação

Não há suporte a essa sintaxe para o pool de SQL sem servidor no Azure Synapse Analytics.

Argumentos

schema_name

O nome do esquema ao qual a exibição pertence.

materialized_view_name

O nome da exibição materializada.

Comentários

Para manter as exibições materializadas atualizadas com as alterações de dados nas tabelas base, o mecanismo do data warehouse adiciona linhas de acompanhamento a cada exibição afetada para refletir as alterações. A seleção de uma exibição materializada inclui a verificação do índice columnstore clusterizado da exibição e a aplicação de alterações incrementais.  As linhas de acompanhamento (TOTAL_ROWS - BASE_VIEW_ROWS) não são eliminadas enquanto os usuários não recompilam a exibição materializada.

O valor de overhead_ratio é calculado como TOTAL_ROWS/MAX (1, BASE_VIEW_ROWS). Se ela for alta, o desempenho de SELECT será prejudicado. Os usuários podem recompilar a exibição materializada para reduzir a taxa de sobrecarga.

Permissões

Exige a permissão VIEW DATABASE STATE.

Exemplos

a. Este exemplo retorna a taxa de sobrecarga de uma exibição materializada.

DBCC PDW_SHOWMATERIALIZEDVIEWOVERHEAD ("dbo.MyIndexedView");

Saída de exemplo:

OBJECT_ID BASE_VIEW_ROWS TOTAL_ROWS OVERHEAD_RATIO
1234 1 3 3.0

B. Este exemplo mostra como a sobrecarga da exibição materializada aumenta conforme os dados são alterados nas tabelas base

Crie uma tabela:

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

Insira cinco linhas em 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);

Crie exibições materializadas MV1:

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

A seleção na exibição materializada retorna duas linhas.

c1 total_number
1 1
2 1

Verifique a sobrecarga da exibição materializada antes de qualquer alteração de dados na tabela base.

DBCC PDW_SHOWMATERIALIZEDVIEWOVERHEAD ("dbo.mv1")

Saída de exemplo:

OBJECT_ID BASE_VIEW_ROWS TOTAL_ROWS OVERHEAD_RATIO
587149137 2 2 1,00000000000000000

Atualize a tabela base. Essa consulta atualiza a mesma coluna na mesma linha 100 vezes para o mesmo valor. O conteúdo da exibição materializada não é alterado.

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

A seleção na exibição materializada retorna o mesmo resultado de antes.

c1 total_number
1 1
2 1

Veja abaixo a saída de DBCC PDW_SHOWMATERIALIZEDVIEWOVERHEAD ("dbo.mv1"). 100 linhas são adicionadas à exibição materializada (total_row – base_view_rows) e a overhead_ratio é aumentada.

OBJECT_ID BASE_VIEW_ROWS TOTAL_ROWS OVERHEAD_RATIO
587149137 2 102 51,00000000000000000

Depois de recriar a exibição materializada, todas as linhas de acompanhamento para alterações de dados incrementais são eliminadas e a taxa de sobrecarga de exibição é reduzida.

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

Saída

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

Confira também