Jeśli wcześniej utworzyłeś partycjonowaną tabelę w SQL Server, a teraz chcesz wiedzieć, ile wierszy jest przechowywanych w każdej partycji, oto trzy zapytania, których możesz użyć.
W szczególności możesz:
- Zapytaj
sys.dm_db_partition_stats
zobacz - Zapytaj
sys.partitions
zobacz - Użyj
$PARTITION
funkcja w zapytaniu
Poniżej znajdują się przykłady wszystkich trzech.
sys.dm_db_partition_stats
sys.dm_db_partition_stats
Widok dynamicznego zarządzania systemem zwraca informacje o liczbie stron i wierszy dla każdej partycji w bieżącej bazie danych.
Oto przykład zwracania liczby wierszy podzielonej na partycje tabeli o nazwie Filmy
.
SELECT numer_partycji, row_countFROM sys.dm_db_partition_statsWHERE object_id =OBJECT_ID('Filmy');
Wynik:
+---------------------+--------------+| numer_partycji | liczba_wierszów ||--------------------+-------------||| 1 | 0 || 2 | 100 || 3 | 3979 || 4 | 0 |+---------------------+-------------+
W takim przypadku pierwsza i ostatnia partycja są puste (zgodnie z zaleceniami firmy Microsoft).
sys.partitions
sys.partitions
widok katalogu systemowego zawiera wiersz dla każdej partycji wszystkich tabel i większości typów indeksów w bazie danych.
Oto, jak możemy go użyć do zwrócenia tych samych danych, co w poprzednim przykładzie.
SELECT numer_partycji, wierszeFROM sys.partitionsWHERE object_id =OBJECT_ID('Filmy');
Wynik:
+---------------------+--------+| numer_partycji | wiersze ||--------------------+---------|| 1 | 0 || 2 | 100 || 3 | 3979 || 4 | 0 |+---------------------+--------+
Możesz zauważyć, że jest to prawie identyczne z poprzednim zapytaniem. Jedyna różnica polega na tym, że ten używa kolumny o nazwie rows
, podczas gdy poprzedni używał kolumny o nazwie row_count
.
$PARTITIONS
$PARTITIONS
funkcja systemowa zwraca numer partycji, na który zestaw wartości kolumn partycjonujących zostanie odwzorowany dla dowolnej określonej funkcji partycji.
Możemy zatem użyć tych informacji do skonstruowania zapytania, które zwraca dane o liczbie wierszy.
SELECT $PARTITION.MoviesPartitionFunction(MovieId) AS [Numer partycji], COUNT(*) AS [Liczba wierszy] FROM Movies GROUP BY $PARTITION.MoviesPartitionFunction(MovieId)ORDER BY [Numer partycji] ASC
Wynik:
+--------------------+------------------+| Numer partycji | Liczba wierszy ||--------------------+------------------|| 2 | 100 || 3 | 3979 |+---------------------+------------------+
Jedyna różnica w wyniku tego przykładu polega na tym, że zwraca on tylko liczbę niepustych wierszy.