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

आप वर्तमान में कैश्ड पृष्ठों की सूची के लिए डायनामिक प्रबंधन दृश्य का उपयोग कर सकते हैं और उन्हें डेटाबेस_आईडी द्वारा फ़िल्टर कर सकते हैं:

   select top 100 * from sys.dm_os_buffer_descriptors

तब आप DBCC PAGEकिसी ऑब्जेक्ट के पृष्ठों को सूचीबद्ध करने के लिए कमांड देख सकते हैं । अच्छा संदर्भ: http://www.mssqltips.com/sqlservertip/1578/use-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
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.