Wie PDW Statistiken Genauigkeit

Zusammenfassung

Dieser Artikel enthält eine Abfrage, um die tatsächliche Zeilenanzahl und die Anzahl der Zeilen in der Parallel Data Warehouse-Statistiken für eine bestimmte Tabelle oder für alle Tabellen in der aktuellen Datenbank vergleichen. Wenn Count Zeilenwerte zu stark abweichen, muss Parallel Data Warehouse nicht genaue Statistiken für diese Tabelle. Dadurch kann den Optimierer Parallel Data Warehouse Betriebs und Bewegung nicht effizient und verursachen, die lange Laufzeit Abfragen auswählen.

Weitere Informationen

Führen Sie die folgende Abfrage zeigen einen Vergleich zwischen der tatsächlichen Zeilenanzahl und CTL Zeilenanzahl, die in die Statistik Parallel Data Warehouse angezeigt wird:

SELECT db_name() as [Database],   pdwtbl.name as [Table], 
Sum(part.rows)/ max(pdwpart.partition_number)/8 AS CMP_ROW_COUNT,
sum(pdwpart.rows)/max(size.distribution_id)/max(pdwpart.partition_number)/8 AS CTL_ROW_COUNT
FROM sys.pdw_nodes_partitions part
JOIN sys.pdw_nodes_tables tbl
ON part.object_id = tbl.object_id
AND part.pdw_node_id = tbl.pdw_node_id
JOIN sys.pdw_distributions size
on size.pdw_node_id = tbl.pdw_node_id
JOIN sys.pdw_table_mappings map
ON map.physical_name = tbl.name
JOIN sys.tables pdwtbl
ON pdwtbl.object_id = map.object_id
JOIN sys.partitions pdwpart
ON pdwpart.object_id = pdwtbl.object_id
join sys.pdw_table_distribution_properties dist
on pdwtbl.object_id = dist.object_id
WHERE dist.distribution_policy = 2
-- uncomment the below if you are looking for row counts for a specific table
-- this table will also need to be added below
-- and pdwtbl.name = 'table_name'
GROUP BY pdwtbl.name
UNION ALL
SELECT db_name() as [Database],
pdwtbl.name,
Sum(part.rows)/ sum(pdwpart.partition_number) AS CMP_ROW_COUNT,
sum(pdwpart.rows) /max(pdwpart.partition_number) /(select count(type) from sys.dm_pdw_nodes where type = ''' + 'COMPUTE' + ''')
AS CTL_ROW_COUNT
FROM sys.pdw_nodes_partitions part
JOIN sys.pdw_nodes_tables tbl
ON part.object_id = tbl.object_id
AND part.pdw_node_id = tbl.pdw_node_id
JOIN sys.pdw_table_mappings map
ON map.physical_name = tbl.name
JOIN sys.tables pdwtbl
ON pdwtbl.object_id = map.object_id
JOIN sys.partitions pdwpart
ON pdwpart.object_id = pdwtbl.object_id
join sys.pdw_table_distribution_properties dist
on pdwtbl.object_id = dist.object_id
where dist.distribution_policy = 3
-- uncomment the below if you are looking for row counts for a specific table
-- this table will also need to be added below
-- and pdwtbl.name = 'table_name'
GROUP BY pdwtbl.name




Hinweise

  • Diese Abfrage nur die Zeilenanzahl und Kardinalität nicht ausgewertet. Außerdem muss Parallel Data Warehouse auf Statistiken für mindestens eine Spalte der Tabelle vorhanden sind. Es nicht berücksichtigt, ob Statistiken für mehrere Spalten vorhanden sind oder welche Spalte für die Statistiken vorhanden.

  • Der Standardwert für die Anzahl Parallel Data Warehouse ist 1.000 Zeilen. Wenn keine Statistiken Parallel Data Warehouse erstellt haben, wird Wert 1000 für die CTL Zeilenanzahl zurückgegeben.

Benötigen Sie weitere Hilfe?

Ihre Office-Fähigkeiten erweitern
Schulungen erkunden
Neue Funktionen als Erster erhalten
Microsoft Insider beitreten

War diese Information hilfreich?

Vielen Dank für Ihr Feedback!

Vielen Dank für Ihr Feedback. Es klingt, als ob es hilfreich sein könnte, Sie mit einem unserer Office-Supportmitarbeiter zu verbinden.

×