Als u eerder een gepartitioneerde tabel in SQL Server hebt gemaakt en u wilt nu weten hoeveel rijen er in elke partitie worden opgeslagen, dan zijn hier drie query's die u kunt gebruiken.
U kunt in het bijzonder:
- Bezoek de
sys.dm_db_partition_stats
bekijken - Bezoek de
sys.partitions
bekijken - Gebruik de
$PARTITION
functie in een zoekopdracht
Hieronder staan voorbeelden van alle drie.
sys.dm_db_partition_stats
De sys.dm_db_partition_stats
weergave dynamisch systeembeheer retourneert pagina- en rijtellingsinformatie voor elke partitie in de huidige database.
Hier is een voorbeeld van het retourneren van het aantal rijen van een gepartitioneerde tabel met de naam Movies
.
SELECT
partition_number,
row_count
FROM sys.dm_db_partition_stats
WHERE object_id = OBJECT_ID('Movies');
Resultaat:
+--------------------+-------------+ | partition_number | row_count | |--------------------+-------------| | 1 | 0 | | 2 | 100 | | 3 | 3979 | | 4 | 0 | +--------------------+-------------+
In dit geval zijn de eerste en laatste partities leeg (zoals aanbevolen door Microsoft).
sys.partitions
De sys.partitions
systeemcatalogusweergave bevat een rij voor elke partitie van alle tabellen en de meeste typen indexen in de database.
Hier is hoe we het kunnen gebruiken om dezelfde gegevens als in het vorige voorbeeld te retourneren.
SELECT
partition_number,
rows
FROM sys.partitions
WHERE object_id = OBJECT_ID('Movies');
Resultaat:
+--------------------+--------+ | partition_number | rows | |--------------------+--------| | 1 | 0 | | 2 | 100 | | 3 | 3979 | | 4 | 0 | +--------------------+--------+
U merkt misschien dat dit bijna identiek is aan de vorige zoekopdracht. Het enige verschil is dat deze de kolom gebruikt met de naam rows
, terwijl de vorige een kolom gebruikte met de naam row_count
.
$PARTITIONS
De $PARTITIONS
systeemfunctie retourneert het partitienummer waarin een set partitiekolomwaarden zou worden toegewezen voor een opgegeven partitiefunctie.
We kunnen deze informatie daarom gebruiken om een query te maken die gegevens over het aantal rijen retourneert.
SELECT
$PARTITION.MoviesPartitionFunction(MovieId) AS [Partition Number],
COUNT(*) AS [Number of Rows]
FROM Movies
GROUP BY $PARTITION.MoviesPartitionFunction(MovieId)
ORDER BY [Partition Number] ASC
Resultaat:
+--------------------+------------------+ | Partition Number | Number of Rows | |--------------------+------------------| | 2 | 100 | | 3 | 3979 | +--------------------+------------------+
Het enige verschil met het resultaat van dit voorbeeld is dat het alleen het aantal niet-lege rijen retourneert.