SharePointデータベースの1つに関する問題のトラブルシューティングを行っています。これは、I/Oアクティビティの増加が原因であると思われるPLEの本質的に大幅な低下です(同時に、読み取り、書き込み、遅延書き込みの増加が見られます)。
この時点でのバッファキャッシュヒット率は通常96%です。
Microsoft SQL Server 2012(SP1)-11.0.3000.0(X64)2012年10月19日13:38:57 Copyright(c)Microsoft Corporation Enterprise Edition:Core-based Licensing(64-bit)on Windows NT 6.2(Build 9200:)(ハイパーバイザー)
PLEドロップの正確な時間にバッファキャッシュのサイズをチェックしたかったので、次のクエリを実行して、サイズをMBで示します。
DECLARE @total_buffer INT;
SELECT @total_buffer = cntr_value
FROM sys.dm_os_performance_counters
WHERE object_name LIKE '%Buffer Manager%'
AND counter_name = 'Database Pages'
SELECT ((@total_buffer * 8) / 1024) AS CacheSizeMB
私が見ているサイズは意味がありません(つまり、私にとっては意味がありません)。大きなサイズが表示されることを期待していたので、キャッシュ内のページ数が最も多いテーブルを確認できました。これにより、どのLOBオブジェクトが取得/アップロードされて問題が発生するかがわかります。
プランのキャッシュも確認する必要がありますか?つまり、PLEドロップは、いくつかの重いテーブルスキャンによって引き起こされる可能性がありますか?
SQL Serverには、利用可能な16GBから最大12GBのメモリが割り当てられます。それはバッファキャッシュサイズとどのように関連していますか?
PLEが0〜5の値に低下している場合は、バッファサイズが大きくなるはずです...
SharePointデータベースの1つに関する問題のトラブルシューティングを行っています。これは、I/Oアクティビティの増加が原因であると思われるPLEの本質的に大幅な低下です(同時に、読み取り、書き込み、遅延書き込みの増加が見られます)。
質問から、あなたがSQL Server 2012 SP1
を持っていることがわかります。 SQL Server 2012のバグ があり、それによりPLEが急落しましたが、それはSQL Server 2012 SP1 CU4
で修正されました。 ** SQL Server 2012 SP3 **がリリースされたので、SP3を適用して問題が収まるかどうかを確認することをお勧めします。
PLEドロップの正確なタイミングでバッファキャッシュのサイズを確認したかったのですが、
PerfmonカウンターBuffer Manager: Database Pages
を使用してバッファーサイズを確認することはできません。 [〜#〜] bol [〜#〜] の意味は次のとおりです。
データベースの内容を含むバッファプール内のページ数を示します。
だから、それは完全なバッファプールについての情報を与えていないことがわかります。 SQL Serverの最大サーバーメモリを定義すると、最大サーバーメモリに設定された値がバッファプールサイズになります。そのため、SQL Server 2012以降では、バッファープールの重要性は低くなっています。以前は、メモリの消費者と提供者の両方でした。 SQL Server 2012以降は、その単なるコンシューマーです。バッファプールの内容を(ある程度)表示するには、DMV sys.dm_os_buffer_descriptors を使用します。
以下のクエリは、各データベースのキャッシュされたページ数を返します。
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;
特定のデータベースのオブジェクトごとにキャッシュされたページを取得する場合
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;