sys.dm_db_page_info (T-SQL)
Berlaku untuk: SQL Server 2019 (15.x) Azure SQL Database Azure SQL Managed Instance
Mengembalikan informasi tentang halaman dalam database. Fungsi mengembalikan satu baris yang berisi informasi header dari halaman, termasuk object_id
, , index_id
dan partition_id
. Fungsi ini menggantikan kebutuhan untuk digunakan DBCC PAGE
dalam banyak kasus.
Catatan
sys.dm_db_page_info
saat ini hanya didukung di SQL Server 2019 (15.x) dan yang lebih baru.
Sintaks
sys.dm_db_page_info ( DatabaseId , FileId , PageId , Mode )
Argumen
DatabaseId | NULL | DEFAULT
ID database. DatabaseId kecil. Input yang valid adalah nomor ID database. Defaultnya adalah NULL, namun mengirim nilai NULL untuk parameter ini akan mengakibatkan kesalahan.
FileId | NULL | DEFAULT
ID file. FileId adalah int. Input yang valid adalah nomor ID file dalam database yang ditentukan oleh DatabaseId. Defaultnya adalah NULL, namun mengirim nilai NULL untuk parameter ini akan mengakibatkan kesalahan.
PageId | NULL | DEFAULT
ID halaman. PageId adalah int. Input yang valid adalah nomor ID halaman dalam file yang ditentukan oleh FileId. Defaultnya adalah NULL, namun mengirim nilai NULL untuk parameter ini akan mengakibatkan kesalahan.
Mode | NULL | DEFAULT
Menentukan tingkat detail dalam output fungsi. 'LIMITED'
akan mengembalikan nilai NULL untuk semua kolom deskripsi, 'DETAILED' akan mengisi kolom deskripsi. DEFAULT
adalah 'LIMITED'
.
Tabel dikembalikan
Nama kolom | Jenis data | Deskripsi |
---|---|---|
database_id | int | ID Database. Di Azure SQL Database, nilainya unik dalam satu database atau kumpulan elastis, tetapi tidak dalam server logis. |
file_id | int | File ID |
page_id | int | ID Halaman |
page_header_version | int | Versi header halaman |
page_type | int | Jenis Halaman |
page_type_desc | nvarchar(64) | Deskripsi jenis halaman |
page_type_flag_bits | nvarchar(64) | Ketik bit Bendera di header halaman |
page_type_flag_bits_desc | nvarchar(64) | Ketik deskripsi bit bendera di header halaman |
page_flag_bits | nvarchar(64) | Bit bendera di header halaman |
page_flag_bits_desc | nvarchar(256) | Deskripsi bit bendera di header halaman |
page_lsn | nvarchar(64) | Nomor urutan log / tanda waktu |
page_level | int | Tingkat halaman dalam indeks (daun = 0) |
object_id | int | ID objek yang memiliki halaman |
index_id | int | ID indeks (0 untuk halaman data timbunan) |
partition_id | bigint | ID partisi |
alloc_unit_id | bigint | ID unit alokasi |
is_encrypted | bit | Bit untuk menunjukkan apakah halaman dienkripsi atau tidak |
has_checksum | bit | Bit untuk menunjukkan apakah halaman memiliki nilai checksum atau tidak |
Checksum | int | Menyimpan nilai checksum yang digunakan untuk mendeteksi kerusakan data |
is_iam_pg | bit | Bit untuk menunjukkan apakah halaman tersebut adalah halaman IAM atau tidak |
is_mixed_ext | bit | Bit untuk menunjukkan apakah dialokasikan dalam tingkat campuran |
has_ghost_records | bit | Bit untuk menunjukkan apakah halaman berisi rekaman hantu Rekaman hantu adalah rekaman yang telah ditandai untuk dihapus tetapi belum dihapus. |
has_version_records | bit | Bit untuk menunjukkan apakah halaman berisi rekaman versi yang digunakan untuk pemulihan database yang dipercepat |
pfs_page_id | int | ID Halaman halaman PFS terkait |
pfs_is_allocated | bit | Bit untuk menunjukkan apakah halaman ditandai sebagai dialokasikan di halaman PFS terkait atau tidak |
pfs_alloc_percent | int | Persentase alokasi seperti yang ditunjukkan oleh byte PFS yang sesuai |
pfs_status | nvarchar(64) | Byte PFS |
pfs_status_desc | nvarchar(64) | Deskripsi byte PFS |
gam_page_id | int | ID Halaman halaman GAM yang sesuai |
gam_status | bit | Bit untuk menunjukkan apakah dialokasikan di GAM |
gam_status_desc | nvarchar(64) | Deskripsi bit status GAM |
sgam_page_id | int | ID Halaman halaman SGAM yang sesuai |
sgam_status | bit | Bit untuk menunjukkan apakah dialokasikan di SGAM |
sgam_status_desc | nvarchar(64) | Deskripsi bit status SGAM |
diff_map_page_id | int | ID Halaman halaman bitmap diferensial yang sesuai |
diff_status | bit | Bit untuk menunjukkan apakah status diff diubah |
diff_status_desc | nvarchar(64) | Deskripsi bit status diff |
ml_map_page_id | int | ID Halaman dari halaman bitmap pengelogan minimal yang sesuai |
ml_status | bit | Bit untuk menunjukkan apakah halaman dicatat minimal |
ml_status_desc | nvarchar(64) | Deskripsi bit status pengelogan minimal |
prev_page_file_id | smallint | ID file halaman sebelumnya |
prev_page_page_id | int | ID halaman sebelumnya |
next_page_file_id | smallint | ID file halaman berikutnya |
next_page_page_id | int | ID halaman berikutnya |
fixed_length | smallint | Panjang baris ukuran tetap |
slot_count | smallint | Jumlah total slot (digunakan dan tidak digunakan) Untuk halaman data, angka ini setara dengan jumlah baris. |
ghost_rec_count | smallint | Jumlah rekaman yang ditandai sebagai hantu di halaman Rekaman hantu adalah rekaman yang telah ditandai untuk dihapus tetapi belum dihapus. |
free_bytes | smallint | Jumlah byte gratis pada halaman |
free_data_offset | int | Offset ruang kosong di akhir area data |
reserved_bytes | smallint | Jumlah byte gratis yang dipesan oleh semua transaksi (jika tumpukan) Jumlah baris hantu (jika daun indeks) |
reserved_bytes_by_xdes_id | smallint | Ruang yang disumbangkan oleh m_xdesID ke m_reservedCnt Hanya untuk tujuan penelusuran kesalahan |
xdes_id | nvarchar(64) | Transaksi terbaru yang dikontribusikan oleh m_reserved Hanya untuk tujuan penelusuran kesalahan |
Keterangan
Fungsi sys.dm_db_page_info
manajemen dinamis mengembalikan informasi seperti page_id
, , file_id
, index_id
object_id
, dan sebagainya, yang ada di header halaman. Informasi ini berguna untuk memecahkan masalah dan men-debug berbagai performa (ketidakcocokan kunci dan kait) dan masalah kerusakan.
sys.dm_db_page_info
dapat digunakan sebagai pengganti DBCC PAGE
pernyataan dalam banyak kasus, tetapi hanya mengembalikan informasi header halaman, bukan isi halaman. DBCC PAGE
masih akan diperlukan untuk kasus penggunaan di mana seluruh konten halaman diperlukan.
Gunakan bersama dengan DMV lain
Salah satu kasus sys.dm_db_page_info
penggunaan penting adalah menggabungkannya dengan DMV lain yang mengekspos informasi halaman. Untuk memfasilitasi kasus penggunaan ini, kolom baru yang disebut page_resource
telah ditambahkan yang mengekspos informasi halaman dalam format heksadesimal 8-byte. Kolom ini telah ditambahkan ke sys.dm_exec_requests
dan sys.sysprocesses
dan akan ditambahkan ke DMV lain di masa mendatang sesuai kebutuhan.
Fungsi baru, sys.fn_PageResCracker
, mengambil page_resource
sebagai input dan menghasilkan satu baris yang berisi database_id
, file_id
dan page_id
. Fungsi ini kemudian dapat digunakan untuk memfasilitasi gabungan antara sys.dm_exec_requests
atau sys.sysprocesses
dan sys.dm_db_page_info
.
Izin
VIEW DATABASE STATE
Memerlukan izin dalam database.
Izin untuk SQL Server 2022 dan yang lebih baru
Memerlukan izin TAMPILKAN STATUS PERFORMA DATABASE pada database.
Contoh
J. Menampilkan semua properti halaman
Kueri berikut mengembalikan satu baris dengan semua informasi halaman untuk , , file_id
page_id
kombinasi tertentu database_id
dengan mode default ('LIMITED')
SELECT *
FROM sys.dm_db_page_info (5, 1, 15, DEFAULT);
B. Gunakan sys.dm_db_page_info dengan DMV lain
Kueri berikut mengembalikan satu baris per wait_resource
yang diekspos oleh sys.dm_exec_requests
saat baris berisi non-null page_resource
SELECT page_info.*
FROM sys.dm_exec_requests AS d
CROSS APPLY sys.fn_PageResCracker(d.page_resource) AS r
CROSS APPLY sys.dm_db_page_info(r.db_id, r.file_id, r.page_id, 'LIMITED') AS page_info;