SQL クエリを実行して、ご利用の RDS インスタンスにおけるメモリ使用量を、データベースごとのバッファープール割り当てと、SQL Server 内部コンポーネント間のメモリ配分という 2 つのレベルで確認します。
まずバッファープールに関するクエリを実行し、どのデータベースが最も多くのメモリを消費しているかを特定します。特定のデータベースが不均衡に高いメモリ使用率を示す場合は、その後、メモリ・クラーク(memory clerks)に関するクエリを実行して、SQL Server がサブシステム間でどのようにメモリを配分しているかを確認します。
Alibaba Cloud インスタンス(例:構成やデータの変更など)に対する高リスク操作を実行する前に、インスタンスのディザスタリカバリおよびフォールトトレランス機能を確認し、データセキュリティを確保してください。
Elastic Compute Service (ECS) インスタンスや RDS インスタンスなど、インスタンスの構成またはデータを変更する前に、スナップショットを作成するか、バックアップを有効化してください。たとえば、RDS インスタンスではログバックアップを有効化できます。
Alibaba Cloud 管理コンソール上で機密情報への権限付与を行った場合、または機密情報を入力した場合、ユーザー名やパスワードなどの機密情報をできる限り早期に変更してください。
前提条件
開始する前に、以下の条件を満たしていることを確認してください。
ApsaraDB RDS for SQL Server インスタンス
インスタンスに接続済みのクライアント。設定手順については、「ApsaraDB RDS for SQL Server インスタンスへの接続」をご参照ください。
データベース別バッファープール使用量の確認
各データベースが占有するバッファープールのサイズを、最大から最小の順に並べて表示するクエリを実行します。
SELECT COUNT(*) * 8 / 1024 AS "Cache Size(MB)",
CASE
WHEN Database_ID = 32767 THEN 'ResourceDb'
ELSE DB_NAME(Database_ID)
END AS "Database"
FROM sys.dm_os_buffer_descriptors
GROUP BY DB_NAME(Database_ID),
Database_ID
ORDER BY "Cache Size(MB)" DESC;結果には、各データベースが MB 単位で消費するバッファープール・キャッシュのサイズが表示されます。ResourceDb(Database_ID 32767)は、SQL Server の内部システムデータベースです。
まずこのクエリを実行し、最も多くのメモリを消費しているデータベースを特定します。特定のデータベースが全体のメモリ使用量に対して著しく大きな割合を占める場合、それはさらに詳細な調査を始めるための有用な出発点となります。
コンポーネント別メモリ使用量の確認
SQL Server の内部メモリコンポーネント(メモリ・クラーク)間でのメモリ配分状況を確認するクエリを実行します。
SELECT * FROM sys.dm_os_memory_clerks;このクエリを用いて、SQL Server がバッファープール、プランキャッシュ、実行メモリなど、各サブシステムに対してどのようにメモリを割り当てているかを把握できます。たとえば、どのコンポーネントが最も大きなメモリ消費者であるかを特定できます。
次のステップ
ストレージに関する質問については、「ストレージ容量に関するよくある質問」をご参照ください。