sys.dm_os_buffer_descriptors (T-SQL)

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform 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 Di 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;  

Baca juga

sys.allocation_units (T-SQL)

Tampilan Manajemen Dinamis Terkait Sistem Operasi SQL Server (Transact-SQL)
Database Sumber Daya
sys.dm_os_buffer_pool_extension_configuration (T-SQL)