sys.dm_os_buffer_descriptors (T-SQL)
Berlaku untuk: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
Mengembalikan informasi tentang semua halaman data yang saat ini berada di kumpulan buffer SQL Server. Output tampilan ini dapat digunakan untuk menentukan distribusi halaman database di kumpulan buffer sesuai dengan database, objek, atau jenis. Di SQL Server, tampilan manajemen dinamis ini juga mengembalikan informasi tentang halaman data dalam file ekstensi kumpulan buffer. Untuk informasi selengkapnya, lihat Ekstensi Kumpulan Buffer.
Saat halaman data dibaca dari disk, halaman disalin ke kumpulan buffer SQL Server dan di-cache untuk digunakan kembali. Setiap halaman data yang di-cache memiliki satu deskriptor buffer. Deskriptor buffer secara unik mengidentifikasi setiap halaman data yang saat ini di-cache dalam instans SQL Server. sys.dm_os_buffer_descriptors mengembalikan halaman yang di-cache untuk semua database pengguna dan sistem. Ini termasuk halaman yang terkait dengan database Sumber Daya.
Catatan
Untuk memanggil ini dari Azure Synapse Analytics atau Analytics Platform System (PDW), gunakan nama sys.dm_pdw_nodes_os_buffer_descriptors. Sintaks ini tidak didukung oleh kumpulan SQL tanpa server di Azure Synapse Analytics.
Nama kolom | Jenis data | Deskripsi |
---|---|---|
database_id | int | ID database yang terkait dengan halaman di kumpulan buffer. Dapat diubah ke null. Di Azure SQL Database, nilainya unik dalam satu database atau kumpulan elastis, tetapi tidak dalam server logis. |
file_id | int | ID file yang menyimpan gambar halaman yang bertahan. Dapat diubah ke null. |
page_id | int | ID halaman dalam file. Dapat diubah ke null. |
page_level | int | Tingkat indeks halaman. Dapat diubah ke null. |
allocation_unit_id | bigint | ID unit alokasi halaman. Nilai ini dapat digunakan untuk menggabungkan sys.allocation_units. Dapat diubah ke null. |
page_type | nvarchar(60) | Tipe halaman, seperti: Halaman data atau halaman Indeks. Dapat diubah ke null. |
row_count | int | Jumlah baris pada halaman. Dapat diubah ke null. |
free_space_in_bytes | int | Jumlah ruang kosong yang tersedia, dalam byte, pada halaman. Dapat diubah ke null. |
is_modified | bit | 1 = Halaman telah dimodifikasi setelah dibaca dari disk. Dapat diubah ke null. |
numa_node | int | Simpul Akses Memori Nonuniform untuk buffer. Dapat diubah ke null. |
read_microsec | bigint | Waktu aktual (dalam mikrosekon) yang diperlukan untuk membaca halaman ke dalam buffer. Angka ini diatur ulang ketika buffer digunakan kembali. Dapat diubah ke null. |
is_in_bpool_extension | bit | 1 = Halaman berada di ekstensi kumpulan buffer. Dapat diubah ke null. |
pdw_node_id | int | Berlaku untuk: Azure Synapse Analytics, Analytics Platform System (PDW) Pengidentifikasi untuk simpul tempat distribusi ini aktif. |
Izin
Pada SQL Server dan SQL Managed Instance, memerlukan VIEW SERVER STATE
izin.
Pada tujuan layanan SQL Database Basic, S0, dan S1, dan untuk database di kumpulan elastis, akun admin server, akun admin Microsoft Entra, atau keanggotaan dalam ##MS_ServerStateReader##
peran server diperlukan. Pada semua tujuan layanan SQL Database lainnya, izin VIEW DATABASE STATE
pada database, atau keanggotaan dalam ##MS_ServerStateReader##
peran server diperlukan.
Izin untuk SQL Server 2022 dan yang lebih baru
Memerlukan izin TAMPILKAN STATUS PERFORMA SERVER pada server.
Keterangan
sys.dm_os_buffer_descriptors mengembalikan halaman yang sedang digunakan oleh database Sumber Daya. sys.dm_os_buffer_descriptors tidak mengembalikan informasi tentang halaman gratis atau dicuri, atau tentang halaman yang memiliki kesalahan saat dibaca.
Dari | Untuk | Aktif | Hubungan |
---|---|---|---|
sys.dm_os_buffer_descriptors | sys.databases | database_id | banyak-ke-satu |
sys.dm_os_buffer_descriptors | <userdb>.sys.allocation_units | allocation_unit_id | banyak-ke-satu |
sys.dm_os_buffer_descriptors | <userdb>.sys.database_files | file_id | banyak-ke-satu |
sys.dm_os_buffer_descriptors | sys.dm_os_buffer_pool_extension_configuration | file_id | banyak-ke-satu |
Contoh
J. Mengembalikan jumlah halaman yang di-cache untuk setiap database
Contoh berikut mengembalikan jumlah halaman yang dimuat untuk setiap database.
SELECT COUNT(*)AS cached_pages_count
,CASE database_id
WHEN 32767 THEN 'ResourceDb'
ELSE db_name(database_id)
END AS database_name
FROM sys.dm_os_buffer_descriptors
GROUP BY DB_NAME(database_id) ,database_id
ORDER BY cached_pages_count DESC;
B. Mengembalikan jumlah halaman yang di-cache untuk setiap objek dalam database saat ini
Contoh berikut mengembalikan jumlah halaman yang dimuat untuk setiap objek dalam database saat ini.
SELECT COUNT(*)AS cached_pages_count
,name ,index_id
FROM sys.dm_os_buffer_descriptors AS bd
INNER JOIN
(
SELECT object_name(object_id) AS name
,index_id ,allocation_unit_id
FROM sys.allocation_units AS au
INNER JOIN sys.partitions AS p
ON au.container_id = p.hobt_id
AND (au.type = 1 OR au.type = 3)
UNION ALL
SELECT object_name(object_id) AS name
,index_id, allocation_unit_id
FROM sys.allocation_units AS au
INNER JOIN sys.partitions AS p
ON au.container_id = p.partition_id
AND au.type = 2
) AS obj
ON bd.allocation_unit_id = obj.allocation_unit_id
WHERE database_id = DB_ID()
GROUP BY name, index_id
ORDER BY cached_pages_count DESC;
Lihat juga
Tampilan Manajemen Dinamis Terkait Sistem Operasi SQL Server (Transact-SQL)
Database Sumber Daya
sys.dm_os_buffer_pool_extension_configuration (T-SQL)