3

特定の SSAS 表形式のメモリ内モデルを使用しているときに、ユーザー セッションごとの実際のメモリ使用量を示すレポートを作成しようとしています。モデル自体は比較的大きく (メモリ内で最大 100 GB)、テスト クエリは比較的重いです: フィルターなし、最小の粒度レベル、SUM メジャーのカップル + 30,000 行の CSV へのエクスポート。

まず、次の DMV をクエリしてみました。

select SESSION_SPID
,SESSION_CONNECTION_ID
,SESSION_USER_NAME
,SESSION_CURRENT_DATABASE
,SESSION_USED_MEMORY
,SESSION_WRITES
,SESSION_WRITE_KB
,SESSION_READS
,SESSION_READ_KB 
from $system.discover_sessions
where SESSION_USER_NAME='username'
and SESSION_SPID=29445

次の結果が得られました: $system.discover_sessions result

SESSION_USED_MEMORY が少なくとも数百 MB 表示されることを期待していましたが、取得した最大値は 11 KB です (この DMVに関する MS の公式ドキュメントでは、SESSION_USED_MEMORY がキロバイト単位であることが示されています)。

また、さらに 2 つの DMV をクエリしてみました。

SELECT SESSION_SPID
,SESSION_COMMAND_COUNT
,COMMAND_READS
,COMMAND_READ_KB
,COMMAND_WRITES
,COMMAND_WRITE_KB
,COMMAND_TEXT FROM $system.discover_commands
where SESSION_SPID=29445

select CONNECTION_ID
,CONNECTION_USER_NAME
,CONNECTION_BYTES_SENT
,CONNECTION_DATA_BYTES_SENT
,CONNECTION_BYTES_RECEIVED
,CONNECTION_DATA_BYTES_RECEIVED from $system.discover_connections
where CONNECTION_USER_NAME='username'
and CONNECTION_ID=2047

しかし、非常に圧倒的な結果も得られました。 $system.discover_commandsからの使用メモリは 0 で、 $system.discover_connectionsからの CONNECTION_DATA_BYTES_SENT の使用メモリは 4.8 MB であり、実際のセッションが必要とするよりもまだ小さいようです。

これらの結果は、ユーザーが PowerBI を介して同様のクエリを送信し、SSAS サーバーで 4 ユーザーあたり約 40 GB の RAM 割り当てのスパイク (つまり、ユーザー セッションあたり約 10 GB) を観察する、非常に率直なテストに対応していないようです。

これら (またはその他の DMV またはメソッド) を使用して、実際のユーザー セッション メモリ消費量を取得した人はいますか? 結果を解析して DB にロードする必要があるため、SQL トレーサ ダンプを使用するのは最後の手段です。私の目標は、アクティブなユーザー セッションを示すリアルタイム レポートを作成することです。

4

0 に答える 0