web-dev-qa-db-ja.com

SSAS表形式インメモリモードの使用時にメモリからデータを削除する

SSAS表形式をインメモリモードで使用しています。また、パーティションを使用してデータを分割しています。だから私は毎月1つのパーティションを持っています。

AFAIK、インメモリモードを使用すると、サーバーは処理されたデータをメモリに永久に保持します。

私の懸念は、2年後にデータが大きくなり、SSASがRAMを使い果たした場合、どうすればよいですか?

  • RAMから古いパーティションを削除することは可能ですか?
  • 古いパーティションをDirectQueryを使用するように変換できますが、新しいパーティションは引き続きインメモリモードを使用できますか?
2
user71787

「RAMから古いパーティションを削除することは可能ですか?」あなたの質問の一部:

はい。

Process Database、Table、またはPartition のBOLエントリで、「1つ以上のパーティションを処理するには」セクションでProcess Clearについて言及しています。事実上、XMLAコマンドを発行して、特定のパーティション(つまり、古いパーティション)をプロセスクリアできます。

これは、SSMS GUIに特定のパーティションをクリアするXMLAコマンドを生成させる方法です。

SSMSで、SSASテーブルサーバーに接続しているときに、[テーブル]ノードを展開し、任意のテーブルを右クリックして[パーティション...]を選択すると、新しいウィンドウUIが表示されます。

次に、円(プロセス)内の3つの緑色の矢印のようなボタンをクリックすると、さらに別の新しいウィンドウUIが表示されます。

次に、クリアするパーティションを確認します。

次に、[モード]ドロップダウンで、[プロセスクリア]を選択します。

次に、上部の[スクリプト]ボタンをクリックすると、新しいクエリウィンドウにXMLAコードが生成されます。以下のようなオブジェクト名が表示されます(オブジェクト名の最後にランダムなGUIDがあるようです)。

<Process xmlns="http://schemas.Microsoft.com/analysisservices/2003/engine">
  <Type>ProcessClear</Type>
  <Object>
    <DatabaseID>YourTabularDatabase</DatabaseID>
    <CubeID>Model</CubeID>
    <MeasureGroupID>Your Measure Group_06e45707-4027-41d9-8fbd-9217a864d859</MeasureGroupID>
    <PartitionID>Your Partition_06e45707-4027-41d9-8fbd-9217a864d859</PartitionID>
  </Object>
</Process>

その後、スクリプトを保存して随時実行するか、スクリプトをコピーして、SQL Server Analysis Servicesコマンドタイプのジョブステップとしてエージェントジョブにコードを実行させることができます。

「古いパーティションをDirectQueryを使用するように変換できますが、新しいパーティションは引き続きインメモリモードを使用できますか?」あなたの質問の一部:

はい。

PartitionsとDirectQuery Mode のBOLエントリでは、これについていくつか説明しています。

SSDTでは、パーティションマネージャー(テーブルメニュー|パーティション)内で、特定のパーティションをDirectQueryまたはインメモリ(サンプルとして設定)のいずれかに設定できます。パーティションをDirectQueryに設定すると、その前に括弧が追加された(DirectQuery)になります。

ちなみに、表形式モデルで使用しているメモリオブジェクトの量を知りたい場合は、 のKasper de Jongeのブログ投稿をチェックして、分析サーバーインスタンスでそのメモリをすべて使用していますか?

1