SQL Server 2008에서 메모리에 캐시 된 내용을 확인하는 방법은 무엇입니까?


13

SQL Server 2008 R2에서 캐시 된 내용을 찾는 방법이 있습니까? 나는 다음과 같은 멋진 기사를 발견했다 : http://blog.sqlauthority.com/2010/06/17/sql-server-data-pages-in-buffer-pool-data-stored-in-memory-cache . 그러나 각 테이블과 인덱스에 얼마나 많은 데이터 (예 : 백분율 및 KB)가 저장되어 있는지 알고 싶습니다. 그러한 데이터를 얻는 간단한 방법이 있습니까?

답변:


16

아래 쿼리를 사용하여 버퍼 풀 (데이터 캐시)에 저장된 내용을 찾을 수 있습니다.

에서 여기 :

select
       count(*)as cached_pages_count,
       obj.name as objectname,
       ind.name as indexname,
       obj.index_id as indexid
from sys.dm_os_buffer_descriptors as bd
    inner join
    (
        select       object_id as objectid,
                           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_id as objectid,
                           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
left outer join sys.indexes ind 
  on  obj.objectid = ind.object_id
 and  obj.index_id = ind.index_id
where bd.database_id = db_id()
  and bd.page_type in ('data_page', 'index_page')
group by obj.name, ind.name, obj.index_id
order by cached_pages_count desc

탁월한 참조 : 스토리지 엔진 내부 : 버퍼 풀에 무엇이 있습니까? 폴 랜달


5

동적 관리보기를 사용하여 현재 캐시 된 페이지를 나열하고 database_id로 필터링 할 수 있습니다.

   select top 100 * from sys.dm_os_buffer_descriptors

그런 다음 DBCC PAGE객체의 페이지를 나열하는 명령을 볼 수 있습니다 . 좋은 참조 : http://www.mssqltips.com/sqlservertip/1578/using-dbcc-page-to-examine-sql-server-table-and-index-data/

그러나 결과를 결합하는 것은 당신에게 달려 있으며 쉬운 일이 아닙니다 :). 효과적인 방법을 제시하면 알려주십시오.


0

이 SQL 쿼리를 사용해보십시오.

select count(*)*8/1024 AS 'Cached Size (MB)'        
,case database_id                
when 32767 then 'ResourceDB'                
else db_name(database_id)                
end as 'Database'
from sys.dm_os_buffer_descriptors
where page_type in
(
'INDEX_PAGE'
,'DATA_PAGE'
)
group by db_name(database_id), database_id
order by 'Cached Size (MB)' desc
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.