我有一个带有简单页面的网站。单击一个按钮,我们执行一个 MDX 查询,该查询返回大约 200,000 行和 20 列。我使用以下代码使用 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 服务器上的应用程序(使用不同的应用程序池)也会受到影响,并且请求需要更长的时间才能执行。