sql-server - SQL - MAXDOP - 来自变量

标签 sql-server performance t-sql

由于某种原因,您无法从变量设置 MAXDOP 量。 有办法解决吗?

我不想使用动态 SQL...

DECLARE @int INT = 1
SELECT COUNT(*) AS MyCount FROM dbo.TableName
OPTION (MAXDOP @int);

我使用的是 SQL Server 2014

更新: 我的疯狂背后还有更多的原因。我们希望了解 Purchasing 是如何运行的,并通过表中的值控制 MAXDOP,如果它正在终止服务器,我们希望在不更改代码的情况下减少 MAXDOP。

最佳答案

There is more to my reason behind my madness. We want to see how say Purchases is running and control the MAXDOP from a value in a table, if it is killing the server we want to reduce the MAXDOP without changing the code.

您正在描述Resource Governor 。您应该将这些查询分类到非关键资源池中,并限制它们可以消耗的资源。该链接包含详细信息,因为这是一个很长的主题。

郑重声明,有一种方法可以控制查询的 DOP,无需更改 SQL 文本:plan guides :

sp_create_plan_guide   
  @name = N'Guide2',   
  @stmt = N'SELECT COUNT(*) AS MyCount FROM dbo.TableName',  
  @type = N'SQL',  
  @module_or_batch = NULL,   
  @params = NULL,   
  @hints = N'OPTION (MAXDOP 1)';

@hints 仍然是动态 SQL。计划指南适用于同一查询文本的每次执行。我认为资源治理在各个方面都是优越的。

关于sql-server - SQL - MAXDOP - 来自变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49879252/

相关文章:

sql-server - 如何为关系动态表单设计数据库?

sql - 如何获取上一行值

javascript - 更有效的方法来完成这个?

sql - 如何使用备份文件(.bak)生成数据库脚本

sql-server - 将表格从行转换为列

sql - MS SQL Server 函数性能问题

sql-server - SqlPackage.exe 提取数据和架构验证

java - sql 在给定阈值处停止计数

javascript - 使用 SumoSelect 的 Html 表单多个选择框,标记必填字段

javascript - 这个速记运算符是怎么回事?