シンプルなページのウェブサイトがあります。ボタンをクリックすると、20 列で約 200,000 行を返す MDX クエリが実行されます。次のコードを使用して、Microsoft.AnalysisServices.AdomdClient ライブラリを使用して MDX クエリを実行します (バージョンは 10.0.0.0 ランタイム バージョン v2.0.50727)。
var connection = new AdomdConnection(connectionString);
var command = new AdomdCommand(query, connection)
{
CommandTimeout = 900
};
connection.ShowHiddenObjects = true;
connection.Open();
var cellSet = command.ExecuteCellSet();
connection.Close();
クエリが実行されている間、アプリケーション プールのメモリ使用量が非常に高くなります。
これは、サーバーのメモリ使用量の初期状態です。
クエリを実行した後:
なぜメモリ使用量が非常に高くなり、そのままになるのかはわかりません。ローカル ボックスでプロファイラーを使用しましたが、すべて問題ないように見えました。
何がメモリを保持しているのかを理解するために必要なオプションは何ですか?
このメモリをクリアする明示的な方法はありますか?
ADOMD ライブラリは常にこの量のメモリを消費しますか? C# を使用して MDX クエリを実行する代替オプションはありますか?
メモリ使用量がこれほど高くなると、IIS は他のクエリの処理を停止し、同じ IIS サーバー (別のアプリケーション プールを使用) でホストされているアプリケーションも影響を受け、要求の実行に時間がかかります。