Berikut adalah beberapa cara untuk mengembalikan info partisi untuk tabel di SQL Server.
- Anda dapat menggunakan
sys.partitions
tampilan katalog sistem untuk mengembalikan info partisi untuk tabel dan sebagian besar jenis tampilan. - Anda dapat menggunakan
sys.dm_db_partition_stats view
tampilan manajemen dinamis sistem untuk mengembalikan informasi halaman dan jumlah baris untuk setiap partisi dalam database saat ini.
Jika tabel atau indeks belum dipartisi, tampilan ini akan tetap menampilkan info partisi (dengan nomor_partisi dari 1
). Ini karena semua tabel dan indeks di SQL Server berisi setidaknya satu partisi, terlepas dari apakah mereka dipartisi secara eksplisit atau tidak.
sys.partitions
sys.partitions
view berisi baris untuk setiap partisi dari semua tabel dan sebagian besar jenis indeks dalam database. Jenis indeks khusus seperti Teks Lengkap, Spasial, dan XML tidak disertakan.
Berikut ini contoh untuk didemonstrasikan.
SELECT *
FROM sys.partitions
WHERE object_id = OBJECT_ID('Movies');
Hasil:
+-------------------+-------------+------------+--------------------+-------------------+--------+---------------------------+--------------------+-------------------------+ | partition_id | object_id | index_id | partition_number | hobt_id | rows | filestream_filegroup_id | data_compression | data_compression_desc | |-------------------+-------------+------------+--------------------+-------------------+--------+---------------------------+--------------------+-------------------------| | 72057594049986560 | 91147370 | 1 | 1 | 72057594049986560 | 0 | 0 | 0 | NONE | | 72057594050052096 | 91147370 | 1 | 2 | 72057594050052096 | 100 | 0 | 0 | NONE | | 72057594050117632 | 91147370 | 1 | 3 | 72057594050117632 | 3979 | 0 | 0 | NONE | | 72057594050183168 | 91147370 | 1 | 4 | 72057594050183168 | 0 | 0 | 0 | NONE | +-------------------+-------------+------------+--------------------+-------------------+--------+---------------------------+--------------------+-------------------------+
Kita dapat melihat bahwa ada empat partisi untuk tabel ini.
Ini dia lagi, kali ini menggunakan output vertikal (untuk menyelamatkan Anda dari keharusan menggulir ke samping):
-[ RECORD 1 ]------------------------- partition_id | 72057594049986560 object_id | 91147370 index_id | 1 partition_number | 1 hobt_id | 72057594049986560 rows | 0 filestream_filegroup_id | 0 data_compression | 0 data_compression_desc | NONE -[ RECORD 2 ]------------------------- partition_id | 72057594050052096 object_id | 91147370 index_id | 1 partition_number | 2 hobt_id | 72057594050052096 rows | 100 filestream_filegroup_id | 0 data_compression | 0 data_compression_desc | NONE -[ RECORD 3 ]------------------------- partition_id | 72057594050117632 object_id | 91147370 index_id | 1 partition_number | 3 hobt_id | 72057594050117632 rows | 3979 filestream_filegroup_id | 0 data_compression | 0 data_compression_desc | NONE -[ RECORD 4 ]------------------------- partition_id | 72057594050183168 object_id | 91147370 index_id | 1 partition_number | 4 hobt_id | 72057594050183168 rows | 0 filestream_filegroup_id | 0 data_compression | 0 data_compression_desc | NONE
sys.dm_db_partition_stats view
Tampilan sys.dm_db_partition_stats view
mengembalikan informasi halaman dan jumlah baris untuk setiap partisi dalam database saat ini. Tetapi jika Anda hanya tertarik pada satu tabel, Anda juga dapat mempersempitnya menjadi tabel itu saja.
Ini contohnya.
SELECT *
FROM sys.dm_db_partition_stats
WHERE object_id = OBJECT_ID('Movies');
Hasil:
+-------------------+-------------+------------+--------------------+--------------------------+--------------------------+------------------------------+-----------------------+---------------------------+--------------------------------+------------------------------------+-------------------+-----------------------+-------------+ | partition_id | object_id | index_id | partition_number | in_row_data_page_count | in_row_used_page_count | in_row_reserved_page_count | lob_used_page_count | lob_reserved_page_count | row_overflow_used_page_count | row_overflow_reserved_page_count | used_page_count | reserved_page_count | row_count | |-------------------+-------------+------------+--------------------+--------------------------+--------------------------+------------------------------+-----------------------+---------------------------+--------------------------------+------------------------------------+-------------------+-----------------------+-------------| | 72057594049986560 | 91147370 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | | 72057594050052096 | 91147370 | 1 | 2 | 1 | 2 | 9 | 0 | 0 | 0 | 0 | 2 | 9 | 100 | | 72057594050117632 | 91147370 | 1 | 3 | 13 | 15 | 33 | 0 | 0 | 0 | 0 | 15 | 33 | 3979 | | 72057594050183168 | 91147370 | 1 | 4 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | +-------------------+-------------+------------+--------------------+--------------------------+--------------------------+------------------------------+-----------------------+---------------------------+--------------------------------+------------------------------------+-------------------+-----------------------+-------------+
Ini dia lagi menggunakan output vertikal:
-[ RECORD 1 ]------------------------- partition_id | 72057594049986560 object_id | 91147370 index_id | 1 partition_number | 1 in_row_data_page_count | 0 in_row_used_page_count | 0 in_row_reserved_page_count | 0 lob_used_page_count | 0 lob_reserved_page_count | 0 row_overflow_used_page_count | 0 row_overflow_reserved_page_count | 0 used_page_count | 0 reserved_page_count | 0 row_count | 0 -[ RECORD 2 ]------------------------- partition_id | 72057594050052096 object_id | 91147370 index_id | 1 partition_number | 2 in_row_data_page_count | 1 in_row_used_page_count | 2 in_row_reserved_page_count | 9 lob_used_page_count | 0 lob_reserved_page_count | 0 row_overflow_used_page_count | 0 row_overflow_reserved_page_count | 0 used_page_count | 2 reserved_page_count | 9 row_count | 100 -[ RECORD 3 ]------------------------- partition_id | 72057594050117632 object_id | 91147370 index_id | 1 partition_number | 3 in_row_data_page_count | 13 in_row_used_page_count | 15 in_row_reserved_page_count | 33 lob_used_page_count | 0 lob_reserved_page_count | 0 row_overflow_used_page_count | 0 row_overflow_reserved_page_count | 0 used_page_count | 15 reserved_page_count | 33 row_count | 3979 -[ RECORD 4 ]------------------------- partition_id | 72057594050183168 object_id | 91147370 index_id | 1 partition_number | 4 in_row_data_page_count | 0 in_row_used_page_count | 0 in_row_reserved_page_count | 0 lob_used_page_count | 0 lob_reserved_page_count | 0 row_overflow_used_page_count | 0 row_overflow_reserved_page_count | 0 used_page_count | 0 reserved_page_count | 0 row_count | 0
Tabel contoh ini telah dipartisi menggunakan metode yang direkomendasikan Microsoft untuk menyimpan partisi kosong di kedua ujung rentang partisi. Ini memastikan bahwa pemisahan/penggabungan partisi di masa mendatang tidak menyebabkan perpindahan data yang tidak terduga.