Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
Van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform Systeem (PDW)
SQL-database in Microsoft Fabric
Geeft informatie terug over alle datapagina's die momenteel in de SQL Server-bufferpool staan. De output van deze weergave kan worden gebruikt om de verdeling van databasepagina's in de bufferpool te bepalen volgens database, object of type. In SQL Server geeft deze dynamische beheerweergave ook informatie terug over de datapagina's in het bufferpool-extensiebestand. Voor meer informatie, zie Buffer Pool Extension.
Wanneer een datapagina van de schijf wordt gelezen, wordt de pagina gekopieerd naar de SQL Server-bufferpool en gecachet voor hergebruik. Elke gecachte datapagina heeft één bufferdescriptor. Bufferdescriptors identificeren uniek elke datapagina die momenteel in een instantie van SQL Server is gecached. sys.dm_os_buffer_descriptors levert gecachte pagina's terug voor alle gebruikers- en systeemdatabases. Dit omvat pagina's die gekoppeld zijn aan de Resource-database.
Opmerking
Om dit aan te roepen vanuit Azure Synapse Analytics of Analytics Platform System (PDW), gebruik de naam sys.dm_pdw_nodes_os_buffer_descriptors. Deze syntaxis wordt niet ondersteund door een serverloze SQL-pool in Azure Synapse Analytics.
| Kolomnaam | Gegevenstype | Description |
|---|---|---|
| database_id | int | ID van de database die aan de pagina in de bufferpool is gekoppeld. Is null-waarde. In Azure SQL Database zijn de waarden uniek binnen één database of een elastische pool, maar niet binnen een logische server. |
| file_id | int | ID van het bestand dat de behouden afbeelding van de pagina opslaat. Is null-waarde. |
| page_id | int | ID van de pagina binnen het bestand. Is null-waarde. |
| page_level | int | Indexniveau van de pagina. Is null-waarde. |
| allocation_unit_id | bigint | ID van de toewijzingseenheid van de pagina. Deze waarde kan worden gebruikt om sys.allocation_units te joinen. Is null-waarde. |
| page_type | nvarchar(60) | Type pagina, zoals: Datapagina of Indexpagina. Is null-waarde. |
| row_count | int | Aantal rijen op de pagina. Is null-waarde. |
| free_space_in_bytes | int | Hoeveelheid beschikbare vrije ruimte, in bytes, op de pagina. Is null-waarde. |
| is_modified | bit | 1 = Pagina is aangepast nadat deze van de schijf is gelezen. Is null-waarde. |
| numa_node | int | Nonuniform Memory Access-knooppunt voor de buffer. Is null-waarde. |
| read_microsec | bigint | De werkelijke tijd (in microseconden) die nodig is om de pagina in de buffer te lezen. Dit nummer wordt gereset wanneer de buffer opnieuw wordt gebruikt. Is null-waarde. |
| is_in_bpool_extension | bit | 1 = De pagina bevindt zich in de bufferpool-extensie. Is null-waarde. |
| pdw_node_id | int |
van toepassing op: Azure Synapse Analytics, Analytics Platform System (PDW) De id voor het knooppunt waarop deze distributie zich bevindt. |
Permissions
Voor SQL Server en SQL Managed Instance is een machtiging vereist VIEW SERVER STATE .
Voor servicedoelstellingen van SQL Database Basic, S0 en S1 en voor databases in elastische pools is het serverbeheerdersaccount , het Microsoft Entra-beheerdersaccount of het lidmaatschap van de ##MS_ServerStateReader##serverrol vereist. Voor alle andere SQL Database-servicedoelstellingen is de VIEW DATABASE STATE machtiging voor de database of het lidmaatschap van de ##MS_ServerStateReader## serverfunctie vereist.
Machtigingen voor SQL Server 2022 en hoger
Vereist de machtiging PRESTATIESTATUS VAN DE WEERGAVESERVER op de server.
Opmerkingen
sys.dm_os_buffer_descriptors levert pagina's terug die door de Resource-database worden gebruikt. sys.dm_os_buffer_descriptors geeft geen informatie terug over gratis of gestolen pagina's, of over pagina's die fouten hadden bij het lezen.
| Van | Tot | On | Relatie |
|---|---|---|---|
| sys.dm_os_buffer_descriptors | sys.databases | database_id | veel-op-een |
| sys.dm_os_buffer_descriptors | <userdb>.sys.allocation_units | allocation_unit_id | veel-op-een |
| sys.dm_os_buffer_descriptors | <userdb>.sys.database_files | file_id | veel-op-een |
| sys.dm_os_buffer_descriptors | sys.dm_os_buffer_pool_extension_configuration | file_id | veel-op-een |
Voorbeelden
Eén. Het teruggeven van gecachet paginatelling voor elke database
Het volgende voorbeeld geeft het aantal geladen pagina's voor elke database terug.
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. Het teruggeven van gecachete paginatelling voor elk object in de huidige database
Het volgende voorbeeld geeft het aantal geladen pagina's voor elk object in de huidige database terug.
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;
Zie ook
sys.allocation_units (Transact-SQL)
Dynamische beheerweergaven van SQL Server-besturingssysteem (Transact-SQL)
Bronnendatabase
sys.dm_os_buffer_pool_extension_configuration (Transact-SQL)