Pokud jste dříve vytvořili rozdělenou tabulku na SQL Server a nyní chcete vědět, kolik řádků je uloženo v každém oddílu, můžete použít tři dotazy.
Zejména můžete:
- Zeptejte se
sys.dm_db_partition_stats
zobrazit - Dotaz na
sys.partitions
zobrazit - Použijte
$PARTITION
funkce v dotazu
Níže jsou uvedeny příklady všech tří.
sys.dm_db_partition_stats
sys.dm_db_partition_stats
zobrazení dynamické správy systému vrací informace o počtu stránek a řádků pro každý oddíl v aktuální databázi.
Zde je příklad vrácení počtu řádků rozdělené tabulky s názvem Movies
.
SELECT
partition_number,
row_count
FROM sys.dm_db_partition_stats
WHERE object_id = OBJECT_ID('Movies');
Výsledek:
+--------------------+-------------+ | partition_number | row_count | |--------------------+-------------| | 1 | 0 | | 2 | 100 | | 3 | 3979 | | 4 | 0 | +--------------------+-------------+
V tomto případě jsou první a poslední oddíly prázdné (jak doporučuje společnost Microsoft).
sys.partitions
Soubor sys.partitions
pohled systémového katalogu obsahuje řádek pro každou oblast všech tabulek a většiny typů indexů v databázi.
Zde je návod, jak jej můžeme použít k vrácení stejných dat jako v předchozím příkladu.
SELECT
partition_number,
rows
FROM sys.partitions
WHERE object_id = OBJECT_ID('Movies');
Výsledek:
+--------------------+--------+ | partition_number | rows | |--------------------+--------| | 1 | 0 | | 2 | 100 | | 3 | 3979 | | 4 | 0 | +--------------------+--------+
Možná si všimnete, že je to téměř totožné s předchozím dotazem. Jediný rozdíl je v tom, že tento používá sloupec nazvaný rows
, zatímco předchozí používal sloupec nazvaný row_count
.
$PARTITIONS
$PARTITIONS
systémová funkce vrací číslo oddílu, do kterého by byla namapována sada hodnot rozdělovacího sloupce pro jakoukoli zadanou funkci oddílu.
Tyto informace tedy můžeme použít k vytvoření dotazu, který vrací data o počtu řádků.
SELECT
$PARTITION.MoviesPartitionFunction(MovieId) AS [Partition Number],
COUNT(*) AS [Number of Rows]
FROM Movies
GROUP BY $PARTITION.MoviesPartitionFunction(MovieId)
ORDER BY [Partition Number] ASC
Výsledek:
+--------------------+------------------+ | Partition Number | Number of Rows | |--------------------+------------------| | 2 | 100 | | 3 | 3979 | +--------------------+------------------+
Jediný rozdíl oproti výsledku tohoto příkladu je ten, že vrací pouze počet neprázdných řádků.