想像してみてください。アプリケーションの複数のインスタンスがあり、複数のサーバーに分散しています。各インスタンスにはデータベースがあり、各データベースのデータは定期的に抽出され、中央のデータウェアハウスに保存されます。古典的なもののように聞こえます。
このDWサイズは〜1 Toで、すべてのテーブルはレコードの作成日にパーティション化されます(毎月)。 DBサーバーには32 Go of RAM= SQLServer(2014、enterprise)が割り当てられています。
問題は、このDBサーバーのPLEが常に低いことです。低は120秒未満を意味します。 PLEの「良い」値の評価は複雑なトピック( here または there )であり、他のインジケーターと相関させる必要があることは知っていますが、私は常に高いほどPLEは、より良い(パフォーマンス、安定性など)です。
本番インスタンスからDWにデータを抽出するプロセスは、5分ごとに実行されます。このプロセスは数千のレコードに影響を与える可能性があり、必ずしも最新のレコードであるとは限りません(たとえば、顧客Aが作成された、6か月前に作成された顧客Bが更新された、など)。そのため、SQLServerは異なるページにアクセスする必要があります。したがって、PLEは低下します。したがって、プロセスは現在設計されているので、低いPLEは私には普通のようです。このDWを使用する他のすべてのプロセス(レポート、集計など)は安定していてパフォーマンスが高いため、実際にはそれほど大した問題ではないかもしれません。
だから、質問:
頻繁にリロードしてデータウェアハウスの設定でSQL Serverのページの平均寿命(PLE)が上下にジャンプするのは正常な場合があります。
どうして?
さて、ユーザーは通常どのデータをクエリしますか?最近挿入されたのは興味深いデータだからです。長期間にわたって分析を実行し、昨年のデータに基づいて予測を行っている場合を除きます。
Microsoft SQL Serverでは、メモリに格納されている各ページに内部カウンターがあります。このカウンターは4から始まり、SQL Serverデータベースエンジンがページを見るたびに、読み取りが行われなかったときに1ずつ差し引かれます。
このアルゴリズムでは、定期的にキャッシュをスイープする「クロックハンド」があります。時計の針が未使用のエントリを踏むたびに、コストがいくらか減少します。エントリが使用されておらず、そのコストがゼロの場合、時計の針はエントリを非表示にしてから、キャッシュからの削除を試みます。実際、エントリのライフタイムは、Clock Entry Infoクラスに埋め込まれた参照カウントによって管理されます。このカウントが0になると、エントリは破棄されます。
(参照: SQL Serverメモリの詳細-パート2 )
データウェアハウスのセットアップでは、新しいデータをロードするたび、およびユーザーがこの新しいデータを要求するたびに、ディスクからメモリ(バッファーキャッシュ)にデータを読み取る必要があります。これにより、内部カウンターにゼロがあるすべてのページがバッファーキャッシュから削除されます。
データページをバッファキャッシュから削除し、新しいデータをディスクからバッファキャッシュに移動すると、ページの寿命の値が お勧め 新しいページのPLEが最初はゼロ(0)であるため、しきい値は300。メモリ内のすべての新しいページ(PLE = 0)とメモリ内のすべての古いページ(PLE> 300)の合計は、300を下回ることがあります。
300のPLEは、最近の推奨事項ではありません。
PLEが300の場合、バッファープール全体が効果的にフラッシュされ、5分ごとに再読み取りされます。 PLEのしきい値のガイダンスである300がMicrosoftによって最初に与えられたとき(2005/2006年頃)、サーバー上の平均メモリ量がはるかに少なかったので、その数値はより理にかなっているかもしれません。今日では、サーバーに64GB、128GB、およびそれ以上のメモリが日常的に搭載されているため、ディスクから5分おきにデータが読み取られるのは、パフォーマンスの問題の原因になる可能性があります...
参照: Knee-Jerk PerfMon Counters:Page Life Expectancy )
現在のハードウェアを前提として、SQL Serverは設計どおりに動作しています
ユーザーがデータを取得するときにパフォーマンスの問題が発生している場合、SQL Serverはより多くのデータをバッファキャッシュに格納できるため、メモリを増やすことでメリットがあるかもしれません新しいデータが読み込まれたときにすべてのデータを削除します。 PLEカウンターは、新しいデータがDWデータベースに格納された場合でもおそらく低下しますが、それほど劇的には低下しない可能性があります。
システムを監視し、baselineでnormalの動作を示す必要があります。規範の外にあるものはすべて分析に値します。
ベースラインデータのキャプチャを開始する必要がある5つの理由
ベースラインは良い考えです。私が話をしたすべてのDBAはその価値を理解しているようです:では、なぜそれほど多くの企業がベースラインデータを持っていないのですか?ふたつの要因があると思います。 1つ目は立ち上げコストであり、コストとは時間と労力のことです。ベースラインをキャプチャするための独自の方法を導入する場合、次の質問に答えて、いくつかのことを考慮する必要があります。-どのデータをキャプチャしますか? -データをキャプチャするのはいつですか? -データを取得するためにどのような方法を使用しますか? -どこに保管しますか? -どのように報告しますか? -データを長期的にどのように管理しますか?
ベースラインが分かれば、DW SQL Serverに適したPLEの値がわかります。