在多维数据集处理期间,OPENQUERY MDX查询非常慢

时间:2017-08-30 09:07:10

标签: sql-server ssas mdx linked-server openquery

我在SSAS服务器上有多个立方体,而且几个立方体是10GB +。其中一个.NET应用程序通过OPENQUERY访问相对较小的多维数据集< 1GB多维数据集。

当其中一个大型多维数据集正在处理(36GB +).NET应用程序超时时,由于存在默认超时(30秒),我可能会增加超时但是这意味着用户将需要等待1到5分钟的任何时间来查询完成。如果我直接运行相同的MDX查询(SSMS或ADOMD),我在相同的情况下得到结果< 1s。

MSOLAP Provider已允许InProcess = true。更改应用程序以使用ADOMD是不可行的选择,因为它需要太多资源。

我曾尝试使用资源调控器并从应用查询和其他请求中单独处理 - 它部分缓解了问题,现在并非每个查询超时 - 只是其中大部分。

我还能做些什么来帮助SQL Server和SSAS相处吗?

PS。在查看服务器上发生的情况时,我注意到SQL Server上有很多ODBC(和相关的)等待。对我来说,看起来当多维数据集处理和访问SQL Server中的数据时,它会阻止"阻塞" OPENQUERY通过OLEDB / ODBC提供程序向立方体请求。我得出了这个结论,因为即使我确定资源调控器有足够的空闲CPU和内存来处理.NET应用程序请求它仍然发生,服务器似乎不那么忙(减少CPU /内存使用)

修改

每个.NET应用程序调用都会运行几个向SSAS运行的MDX查询 - 每个查询都不会返回超过100行。所有这些都在临时表中合并为最终结果。现在,我知道启动和优化代码是合乎逻辑的,但代码是我们想要改变的最后一件事。经过充分测试,表现良好。

我正在寻找配置和基础架构的想法。

1 个答案:

答案 0 :(得分:1)

在我们的存储过程中使用OPENQUERY(对于mdx)时,我们遇到了非常类似的阻塞和超时问题。

大约2年前,我们转而使用开源CLR解决方案 - 我们现在以类似于OPENQUERY的方式使用这些存储过程但没有问题!!

enter image description here

目前可在此处获取:

https://olapextensions.codeplex.com/