【发布时间】:2015-03-12 04:09:28
【问题描述】:
我在存储过程中有查询,我想看看有没有办法指定这个查询需要使用的内存。
我知道在服务器级别我们可以更改使用查询的最小内存,但我是针对服务器上的所有查询,但我正在寻找特定查询级别的选项。
【问题讨论】:
-
我不相信这是可能的,但如果你分享你为什么要这样做,我们可能会给你选择。您正在使用的 Sql Server 的特定版本和版本也可能会有所帮助。
-
过程排序组件在生产中溢出到 Tempdb 但在开发中没有溢出,两者都是相同的执行计划,开发配置是 8GB RAM & 1 Core,PROD 是 40GB &8core,所以问题是 PROD 溢出中的查询(哈希匹配和排序组件)当有足够的内存时进入 tempdb。
-
如果 Sql Server 为此使用 tempdb 而不是内存,这是因为由于负载或生产数据与开发数据的大小,它在其他地方需要该内存。如果它需要更多内存,请将更多内存放入服务器,或调整查询以减少使用(如果可能)。
-
生产有 50GB RAM 并且驱动器是 SSD 驱动器,看起来 sql 引擎无法分配适当的内存或者我缺少一些与内存相关的设置,我发现我们可以增加查询的最小内存但是适用于服务器上的所有查询。
-
你确定是这个查询在做这个吗?您确定使用 Tempdb 会导致很大的性能问题吗?您可以发布查询,我们可以看看是否可以采取任何措施来提高效率。
标签: sql-server sql-server-2008 sql-server-2005 sql-server-2008-r2 sql-server-2012