Jika sebelumnya Anda telah membuat tabel yang dipartisi di SQL Server, dan sekarang Anda ingin mengetahui berapa banyak baris yang disimpan di setiap partisi, berikut adalah tiga kueri yang dapat Anda gunakan.
Secara khusus, Anda dapat:
- Kueri
sys.dm_db_partition_stats
lihat - Kueri
sys.partitions
lihat - Gunakan
$PARTITION
fungsi dalam kueri
Di bawah ini adalah contoh ketiganya.
sys.dm_db_partition_stats
sys.dm_db_partition_stats
tampilan manajemen dinamis sistem mengembalikan informasi jumlah halaman dan baris untuk setiap partisi dalam database saat ini.
Berikut ini contoh mengembalikan jumlah baris dari tabel yang dipartisi yang disebut Movies
.
SELECT
partition_number,
row_count
FROM sys.dm_db_partition_stats
WHERE object_id = OBJECT_ID('Movies');
Hasil:
+--------------------+-------------+ | partition_number | row_count | |--------------------+-------------| | 1 | 0 | | 2 | 100 | | 3 | 3979 | | 4 | 0 | +--------------------+-------------+
Dalam hal ini, partisi pertama dan terakhir kosong (seperti yang direkomendasikan oleh Microsoft).
sys.partitions
sys.partitions
tampilan katalog sistem berisi baris untuk setiap partisi dari semua tabel dan sebagian besar jenis indeks dalam database.
Inilah cara kita dapat menggunakannya untuk mengembalikan data yang sama seperti pada contoh sebelumnya.
SELECT
partition_number,
rows
FROM sys.partitions
WHERE object_id = OBJECT_ID('Movies');
Hasil:
+--------------------+--------+ | partition_number | rows | |--------------------+--------| | 1 | 0 | | 2 | 100 | | 3 | 3979 | | 4 | 0 | +--------------------+--------+
Anda mungkin memperhatikan bahwa ini hampir identik dengan kueri sebelumnya. Satu-satunya perbedaan adalah yang ini menggunakan kolom yang disebut rows
, sedangkan yang sebelumnya menggunakan kolom bernama row_count
.
$PARTITIONS
$PARTITIONS
fungsi sistem mengembalikan nomor partisi di mana satu set nilai kolom partisi akan dipetakan untuk setiap fungsi partisi yang ditentukan.
Oleh karena itu, kami dapat menggunakan info ini untuk membuat kueri yang mengembalikan data jumlah baris.
SELECT
$PARTITION.MoviesPartitionFunction(MovieId) AS [Partition Number],
COUNT(*) AS [Number of Rows]
FROM Movies
GROUP BY $PARTITION.MoviesPartitionFunction(MovieId)
ORDER BY [Partition Number] ASC
Hasil:
+--------------------+------------------+ | Partition Number | Number of Rows | |--------------------+------------------| | 2 | 100 | | 3 | 3979 | +--------------------+------------------+
Satu-satunya perbedaan dengan hasil dari contoh ini, adalah bahwa ia hanya mengembalikan jumlah baris yang tidak kosong.