Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL Database w Microsoft Fabric
Zwraca informacje o wszystkich stronach danych, które obecnie znajdują się w puli SQL Server. Wyjście tego widoku może być użyte do określenia rozkładu stron bazy danych w puli bufora według bazy danych, obiektów lub typu. W SQL Server ten dynamiczny widok zarządzania zwraca również informacje o stronach danych w pliku rozszerzenia puli bufora. Więcej informacji można znaleźć w artykule Rozszerzenie puli buforowej.
Gdy strona danych jest odczytywana z dysku, jest kopiowana do puli SQL Server i buforowana do ponownego użycia. Każda strona danych w pamięci podręcznej ma jeden deskryptor bufora. Deskryptory bufora jednoznacznie identyfikują każdą stronę danych, która jest obecnie buforowana w instancji SQL Server. sys.dm_os_buffer_descriptors zwraca strony pamięci podręcznej dla wszystkich baz danych użytkowników i systemu. Dotyczy to stron powiązanych z bazą zasobów (Resource database).
Uwaga / Notatka
Aby wywołać to z Azure Synapse Analytics lub Analytics Platform System (PDW), użyj nazwy sys.dm_pdw_nodes_os_buffer_descriptors. Ta składnia nie jest obsługiwana przez bezserwerową pulę SQL w usłudze Azure Synapse Analytics.
| Nazwa kolumny | Typ danych | Description |
|---|---|---|
| id_bazy_danych | int | ID bazy danych powiązanej ze stroną w puli bufora. Jest dopuszczana wartość null. W usłudze Azure SQL Database wartości są unikatowe w ramach pojedynczej bazy danych lub elastycznej puli, ale nie w obrębie serwera logicznego. |
| identyfikator_pliku | int | ID pliku, który przechowuje zachowany obraz strony. Jest dopuszczana wartość null. |
| page_id | int | Identyfikator strony w pliku. Jest dopuszczana wartość null. |
| page_level | int | Poziom indeksu strony. Jest dopuszczana wartość null. |
| allocation_unit_id | bigint | ID jednostki alokacji strony. Ta wartość może być użyta do łączenia sys.allocation_units. Jest dopuszczana wartość null. |
| page_type | nvarchar(60) | Typ strony, na przykład: strona danych lub strona indeksowa. Jest dopuszczana wartość null. |
| row_count | int | Liczba wierszy na stronie. Jest dopuszczana wartość null. |
| free_space_in_bytes | int | Ilość dostępnej wolnej przestrzeni, w bajtach, na stronie. Jest dopuszczana wartość null. |
| is_modified | bit | 1 = Strona została zmodyfikowana po odczytaniu z dysku. Jest dopuszczana wartość null. |
| numa_node | int | Niejednolity węzeł dostępu do pamięci dla bufora. Jest dopuszczana wartość null. |
| read_microsec | bigint | Rzeczywisty czas (w mikrosekundach) potrzebny na odczytanie strony do bufora. Ta liczba jest resetowana przy ponownym użyciu bufora. Jest dopuszczana wartość null. |
| is_in_bpool_extension | bit | 1 = Strona znajduje się w rozszerzeniu puli buforowej. Jest dopuszczana wartość null. |
| pdw_node_id | int |
Dotyczy do: Azure Synapse Analytics, Analytics Platform System (PDW) Identyfikator węzła, w ramach którego znajduje się ta dystrybucja. |
Permissions
W programie SQL Server i usłudze SQL Managed Instance wymagane jest VIEW SERVER STATE uprawnienie.
W przypadku celów usługi SQL Database Basic, S0 i S1 oraz baz danych w elastycznych pulach wymagane jest konto administratora serwera , konto administratora firmy Microsoft Entra lub członkostwo w ##MS_ServerStateReader##roli serwera . We wszystkich innych celach usługi SQL Database wymagane VIEW DATABASE STATE jest uprawnienie do bazy danych lub członkostwo w ##MS_ServerStateReader## roli serwera.
Uprawnienia dla programu SQL Server 2022 i nowszych
Wymaga uprawnienia WYŚWIETL STAN WYDAJNOŚCI SERWERA na serwerze.
Uwagi
sys.dm_os_buffer_descriptors zwraca strony używane przez bazę zasobów (Resource database). sys.dm_os_buffer_descriptors nie zwraca informacji o darmowych lub skradzionych stronach ani o stronach, które zawierały błędy podczas czytania.
| Źródło | To | On | Relacja |
|---|---|---|---|
| sys.dm_os_buffer_descriptors | sys.databases | id_bazy_danych | wiele do jednego |
| sys.dm_os_buffer_descriptors | <userdb>.sys.allocation_units | allocation_unit_id | wiele do jednego |
| sys.dm_os_buffer_descriptors | <userdb>.sys.database_files | identyfikator_pliku | wiele do jednego |
| sys.dm_os_buffer_descriptors | sys.dm_os_buffer_pool_extension_configuration | identyfikator_pliku | wiele do jednego |
Przykłady
A. Zwracanie liczby stron w pamięci podręcznej dla każdej bazy danych
Poniższy przykład zwraca liczbę załadowanych stron dla każdej bazy danych.
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. Zwracanie liczby stron w pamięci podręcznej dla każdego obiektu w bieżącej bazie danych
Poniższy przykład zwraca liczbę załadowanych stron dla każdego obiektu w aktualnej bazie danych.
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;
Zobacz także
sys.allocation_units (Transact-SQL)
Dynamiczne widoki zarządzania związane z systemem operacyjnym PROGRAMU SQL Server (Transact-SQL)
Baza zasobów
sys.dm_os_buffer_pool_extension_configuration (Transact-SQL)