如何配置查询(选择查询)在sql server 2008中可以使用的最大内存?
我知道有办法设置最小值,但最大值怎么样?我想使用它,因为我有许多并行进程。我知道MAXDOP选项,但这适用于处理器。
更新
我实际上要做的是连续运行一些数据。此数据加载采用ETL格式(提取转换和加载)。在加载数据时,我想运行一些查询(选择)。所有这些都是昂贵的查询(包含分组)。 对我来说最重要的流程是数据加载。我获得了10000行/秒的平均速度,当我并行运行查询时,它下降到4000行/秒甚至更低。我知道应该提供更多细节,但这是我工作的更复杂的产品,我无法详细说明。我可以保证的另一件事是我的加载速度不会因锁定问题而下降,因为我监控并删除它们。
答案 0 :(得分:3)
我无法想到在每个查询级别设置最大内存。
如果您使用的是Enterprise Edition,则可以使用resource governor设置特定工作负载组可以使用的最大内存量,这可能有所帮助。
答案 1 :(得分:0)
在SQL 2008中,您可以使用资源调控器来实现此目的。在那里,您可以设置request_max_memory_grant_percent来设置内存(这是相对于池的max_memory_percent值指定的池大小的百分比)。此设置不是特定于查询的,而是特定于会话的。
答案 2 :(得分:0)
除了马丁的回答
如果您的查询完全相同或类似,处理相同的数据,那么无论如何它们都将共享内存。
示例:
一个拥有100个并发连接的繁忙网站,它们在大致相同的数据范围内运行6个不同的参数化查询。
如果您有100个不同的查询或未进行参数化,则修复代码。
每个查询的内存是我自上次千禧年以来从未想过或不关心的事情