web-dev-qa-db-ja.com

SSASキャッシュレベル

大量のデータの統計をレポートするためにSSASを使用しています。

最近、チューニングのベストプラクティスを学び始めましたが、SSASがデータをキャッシュする方法に興味があります。

私は調査を行い、直接ディスクIOヒットを回避するために、SSASが使用しているキャッシュには3つのタイプがあると結論付けました。

  1. フォーミュラエンジンキャッシュ
  2. ストレージエンジンキャッシュ
  3. オペレーティングシステムのキャッシュ

したがって、問題は、コールドクエリが実行されているときに、3つのレベルすべてにデータが格納されるかどうかです。それが起こっている場合、同じデータが異なるレベルでキャッシュされる可能性はありますか?もしそうなら、RAMのほぼ全体を消費する可能性があるので、なぜキャッシュの使用率が高いのですか?

たとえば、FEキャッシュがセルセットまたは行セットデータの一部を格納し、同時にSEキャッシュがセルセットまたは行セットデータのサブパートを格納し、OSキャッシュがデータを格納する可能性はありますか?

2
Stavros Koureas

はい、3つのレイヤーすべてが同じデータをキャッシュしていることがあります。

SSASは使用されるため、すべてのメモリを消費することを心配する必要はありません。 SQLServerデータベースエンジンも同じことをします。

SSASがメモリ不足になると、SSASは独自のキャッシュを自動的に管理し、必要に応じてフロントエンドとストレージエンジンの両方のキャッシュからエントリを削除します。同じホスト上でメモリを競合する他のサービスを実行している場合は、 メモリプロパティ 設定を変更して、SSASからのメモリ使用量を制限することをお勧めします。

参照するオペレーティングシステムのキャッシュは、ファイルシステムのキャッシュです。 Windowsは、メモリ不足になったときにも自動的に管理します。タスクマネージャーでは、「キャッシュされた」数値のほとんどはファイルシステムのキャッシュによるものです。 SysinternalsのRAMMap ユーティリティとそのEmptyスタンバイリストオプションを使用して、ファイルシステムキャッシュを削除できます。

Chris Webbは、SSASキャッシュウォーミングの実行に関するブログ投稿をいくつか書いています。これは興味深いと思うかもしれません。投稿は2009年のものですが、詳細はSSAS多次元の新しいバージョンにも関連しています。

0
gonsalu