微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在SSAS表格模型中获取每个用户会话的实际内存使用情况

如何解决在SSAS表格模型中获取每个用户会话的实际内存使用情况

我正在尝试构建一个报告,该报告将显示在使用特定的SSAS表格内存模型时每个用户会话的实际内存使用情况。该模型本身相对较大(内存中约有100GB),并且测试查询相对较重:没有过滤器,最低粒度级别,多项SUM度量+将30k行导出为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 official documentation表示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

但是也得到了相当不错的结果:CONNECTION_DATA_BYTES_SENT的$system.discover_commands使用了0的内存,$system.discover_connections使用了4,8 MB的内存,似乎仍然小于实际会话所需的内存。

这些结果似乎与非常直率的测试不符,在该测试中,用户将通过PowerBI发送类似的查询,并且我们将观察到每4个用户在SSAS服务器上的RAM分配出现40GB的峰值(每个用户会话大约10GB)

是否有人使用这些(或任何其他DMV或方法)来获取实际的用户会话内存消耗?使用sql跟踪器转储将是最后的选择,因为它将需要解析并将结果加载到数据库中,而我的目标是要获得一个实时报告,以显示活动的用户会话。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。