Statystyki magazynowania danych sieci szkieletowej
Dotyczy: Punkt końcowy SQL i magazyn w usłudze Microsoft Fabric
Magazyn w usłudze Microsoft Fabric używa aparatu zapytań do utworzenia planu wykonywania dla danego zapytania SQL. Po przesłaniu zapytania optymalizator zapytań próbuje wyliczyć wszystkie możliwe plany i wybrać najbardziej efektywnego kandydata. Aby określić, który plan wymagałby najmniejszego obciążenia (we/wy, procesora CPU, pamięci), aparat musi mieć możliwość oszacowania ilości pracy lub wierszy, które mogą być przetwarzane przez każdego operatora. Następnie, na podstawie kosztów każdego planu, wybiera ten z najmniejszą ilością szacowanej pracy. Statystyki to obiekty zawierające istotne informacje o danych, aby umożliwić optymalizatorowi zapytań oszacowanie tych kosztów.
Ważne
Usługa Microsoft Fabric jest dostępna w wersji zapoznawczej.
Jak korzystać ze statystyk
Aby uzyskać optymalną wydajność zapytań, ważne jest, aby mieć dokładne statystyki. Usługa Microsoft Fabric obsługuje obecnie następujące ścieżki, aby zapewnić odpowiednie i aktualne statystyki:
- Statystyki zdefiniowane przez użytkownika
- Problemy użytkownika dotyczące języka DDL w celu tworzenia, aktualizowania i porzucania statystyk zgodnie z potrzebami
- Statystyki automatyczne
- Aparat automatycznie tworzy i utrzymuje statystyki w czasie wykonywania zapytań
Statystyki ręczne dla wszystkich tabel
Tradycyjna opcja utrzymania kondycji statystyk jest dostępna w usłudze Microsoft Fabric. Użytkownicy mogą tworzyć, aktualizować i porzucać statystyki jednokolumtowe oparte na histogramie, odpowiednio za pomocą funkcji CREATE STATISTICS, UPDATE STATISTICS i DROP STATISTICS. Użytkownicy mogą również wyświetlać zawartość statystyk jednokolumtowych opartych na histogramie z SHOW_STATISTICS DBCC. Obecnie obsługiwana jest ograniczona wersja tych instrukcji.
- Jeśli tworzysz statystyki ręcznie, rozważ skupienie się na tych, które są intensywnie używane w obciążeniu zapytań (w szczególności w grupach BYs, ORDER BYs, filtry i JOINs).
- Rozważ regularne aktualizowanie statystyk na poziomie kolumny po zmianach danych, które znacząco zmieniają liczbę wierszy lub rozkład danych.
Przykłady ręcznej konserwacji statystyk
Aby utworzyć statystyki dotyczące dbo.DimCustomer
tabeli, na podstawie wszystkich wierszy w kolumnie CustomerKey
:
CREATE STATISTICS DimCustomer_CustomerKey_FullScan
ON dbo.DimCustomer (CustomerKey) WITH FULLSCAN;
Aby ręcznie zaktualizować obiekt DimCustomer_CustomerKey_FullScan
statystyk , być może po aktualizacji dużych danych:
UPDATE STATISTICS dbo.DimCustomer (DimCustomer_CustomerKey_FullScan) WITH FULLSCAN;
Aby wyświetlić informacje o obiekcie statystyk:
DBCC SHOW_STATISTICS ("dbo.DimCustomer", "DimCustomer_CustomerKey_FullScan");
Aby wyświetlić tylko informacje o histogramie obiektu statystyk:
DBCC SHOW_STATISTICS ("dbo.DimCustomer", "DimCustomer_CustomerKey_FullScan") WITH HISTOGRAM;
Aby ręcznie usunąć obiekt DimCustomer_CustomerKey_FullScan
statystyk:
DROP STATISTICS dbo.DimCustomer.DimCustomer_CustomerKey_FullScan;
Następujące obiekty języka T-SQL mogą być również używane do sprawdzania ręcznie utworzonych i automatycznie utworzonych statystyk w usłudze Microsoft Fabric:
- widok katalogu sys.stats
- widok wykazu sys.stats_columns
- STATS_DATE funkcja systemowa
Automatyczne statystyki w zapytaniu
Za każdym razem, gdy wydasz zapytanie i optymalizator zapytań wymaga statystyk dotyczących eksploracji planu, usługa Microsoft Fabric automatycznie utworzy te statystyki, jeśli jeszcze nie istnieją. Po utworzeniu statystyk optymalizator zapytań może ich używać do szacowania kosztów planu zapytania wyzwalającego. Ponadto jeśli aparat zapytań ustali, że istniejące statystyki dotyczące zapytania nie odzwierciedlają już dokładnie danych, te statystyki zostaną automatycznie odświeżone. Ponieważ te operacje automatyczne są wykonywane synchronicznie, można oczekiwać, że czas trwania zapytania zostanie uwzględniony tym razem, jeśli potrzebne statystyki jeszcze nie istnieją lub od czasu ostatniego odświeżenia statystyk wystąpiły istotne zmiany danych.
Aby zweryfikować automatyczne statystyki w czasie wykonywania zapytania
Istnieją różne przypadki, w których można oczekiwać pewnego rodzaju automatycznych statystyk. Najczęściej spotykane są statystyki oparte na histogramie, które są żądane przez optymalizator zapytań dla kolumn przywoływanych w grupach BYs, JOINs, klauzule DISTINCT, filtry (klauzule WHERE) i ORDER BYs. Jeśli na przykład chcesz zobaczyć automatyczne tworzenie tych statystyk, zapytanie wyzwoli tworzenie, jeśli statystyki COLUMN_NAME
jeszcze nie istnieją. Na przykład:
SELECT <COLUMN_NAME>
FROM <YOUR_TABLE_NAME>
GROUP BY <COLUMN_NAME>;
W takim przypadku należy oczekiwać, że statystyki COLUMN_NAME
zostały utworzone. Jeśli kolumna była również kolumną varchar, zobaczysz również utworzone statystyki średniej długości kolumny. Jeśli chcesz automatycznie zweryfikować statystyki, możesz uruchomić następujące zapytanie:
select
object_name(s.object_id) AS [object_name],
c.name AS [column_name],
s.name AS [stats_name],
s.stats_id,
STATS_DATE(s.object_id, s.stats_id) AS [stats_update_date],
s.auto_created,
s.user_created,
s.stats_generation_method_desc
FROM sys.stats AS s
INNER JOIN sys.objects AS o
ON o.object_id = s.object_id
INNER JOIN sys.stats_columns AS sc
ON s.object_id = sc.object_id
AND s.stats_id = sc.stats_id
INNER JOIN sys.columns AS c
ON sc.object_id = c.object_id
AND c.column_id = sc.column_id
WHERE o.type = 'U' -- Only check for stats on user-tables
AND s.auto_created = 1
AND o.name = '<YOUR_TABLE_NAME>'
ORDER BY object_name, column_name;
To zapytanie szuka tylko statystyk opartych na kolumnach. Jeśli chcesz zobaczyć wszystkie statystyki, które istnieją dla tej tabeli, usuń numery JOIN w systemach sys.stats_columns
i sys.columns
.
Teraz możesz znaleźć statistics_name
automatycznie wygenerowaną statystykę histogramu (powinna być podobna _WA_Sys_00000007_3B75D760
do ) i uruchomić następujący kod T-SQL:
DBCC SHOW_STATISTICS ('<YOUR_TABLE_NAME>', '<statistics_name>');
Na przykład:
DBCC SHOW_STATISTICS ('sales.FactInvoice', '_WA_Sys_00000007_3B75D760');
Wartość Updated
w zestawie wyników SHOW_STATISTICS DBCC powinna być datą (w formacie UTC) podobną do po uruchomieniu oryginalnego zapytania GROUP BY.
Te automatycznie generowane statystyki mogą być następnie używane w kolejnych zapytaniach przez aparat zapytań w celu zwiększenia kosztów i wydajności wykonywania planu. Jeśli w tabeli wystąpi wystarczająca liczba zmian, aparat zapytań również odświeży te statystyki, aby poprawić optymalizację zapytań. To samo ćwiczenie powyżej można zastosować po znacznej zmianie tabeli. W wersji zapoznawczej usługi Fabric aparat zapytań SQL używa tego samego progu ponownej kompilacji co SQL Server 2016 (13.x) w celu odświeżenia statystyk.
Typy automatycznie generowanych statystyk
W usłudze Microsoft Fabric istnieje wiele typów statystyk, które są generowane automatycznie przez aparat w celu ulepszenia planów zapytań. Obecnie można je znaleźć w pliku sys.stats , chociaż nie wszystkie są możliwe do działania:
- Statystyki histogramu
- Utworzono dla kolumny, która wymaga statystyk histogramu w czasie wykonywania zapytania
- Te obiekty zawierają histogram i informacje o gęstości dotyczące rozkładu określonej kolumny. Podobnie jak w przypadku statystyk automatycznie tworzonych w czasie wykonywania zapytań w dedykowanych pulach usługi Azure Synapse Analytics.
- Nazwa zaczyna się od
_WA_Sys_
. - Zawartość można wyświetlić za pomocą SHOW_STATISTICS DBCC
- Statystyki średniej długości kolumny
- Utworzono dla kolumn znaków (char i varchar) wymagających średniej długości kolumny w czasie wykonywania zapytania.
- Te obiekty zawierają wartość reprezentującą średni rozmiar wiersza kolumny varchar w momencie tworzenia statystyk.
- Nazwa zaczyna się od
ACE-AverageColumnLength_
. - Nie można wyświetlić zawartości i nie można jej odwoływać.
- Statystyki kardynalności oparte na tabelach
- Utworzono dla tabeli wymagające szacowania kardynalności w czasie wykonywania zapytania.
- Te obiekty zawierają oszacowanie liczby wierszy tabeli.
- Nazwane
ACE-Cardinality
. - Nie można wyświetlić zawartości i nie można jej odwoływać.
Ograniczenia
- Tylko statystyki histogramu z jedną kolumną można tworzyć i modyfikować ręcznie.
- Tworzenie statystyk wielokolumnach nie jest obsługiwane.
- Inne obiekty statystyk mogą być wyświetlane w obszarze sys.stats oprócz ręcznie utworzonych statystyk i automatycznie utworzonych statystyk. Te obiekty nie są używane do optymalizacji zapytań.
Następne kroki
Opinia
Prześlij i wyświetl opinię dla