AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 312860
Accepted
Benjamin
Benjamin
Asked: 2022-06-03 04:06:16 +0800 CST2022-06-03 04:06:16 +0800 CST 2022-06-03 04:06:16 +0800 CST

Azure SQL - 在数据库范围级别更改 MAX DOP 值没有发生

  • 772

我正在尝试更改当前设置为零的 Azure 托管 SQL 的 MAX DOP 值。这是我正在运行的脚本:

USE [my-sql-db] 
GO
ALTER DATABASE SCOPED CONFIGURATION SET MAXDOP =5 ; 

该脚本工作正常并返回成功,但是当我运行时

SELECT value_in_use FROM sys.configurations WHERE name = 'max degree of parallelism'

我看到数字设置为零

当我运行时, select * from sys.dm_exec_query_memory_Grants我可以看到该值设置为1。

但是当我检查 SSMS 中的数据库设置时,我可以看到 MAXDOP 的正确值 在此处输入图像描述

我想知道为什么当我检查 SSMS 中的数据库设置时与我检查sys.configurations或时会得到冲突的数字sys.dm_exec_query_memory_Grants?

sql-server azure-sql-database
  • 2 2 个回答
  • 87 Views

2 个回答

  • Voted
  1. sqL_handLe
    2022-06-03T04:33:55+08:002022-06-03T04:33:55+08:00

    给定查询执行的 MAXDOP 在运行时协商,考虑到许多因素。

    2013 年的这篇文章给出了当时涉及的具体细节。
    工作原理:最大化最大并行度 (MAXDOP)

    由于撰写了该文章,因此添加了 MAXDOP 的数据库范围配置设置。它不会替换 sys.configurations 中的设置,后者可以通过 SSMS 中的 UI 或通过 sp_configure 进行设置。相反,它是对给定查询影响 MAXDOP 的另一层。不应期望设置数据库范围的配置 MAXDOP 选项会更改存储在实例范围的 MAXDOP 设置中的值。

    不管通过评估其层次结构内的 MAXDOP 系统设置和对查询执行的适用性确定的 MAXDOP 候选者如何,都存在可能确定执行 DOP 的额外查询和运行时注意事项。

    例如,使用非内联标量用户定义函数可能会导致串行计划而不是并行(或至少是串行计划区域)。

    影响 DOP 的运行时因素之一是“Max Workers Count”,其中当前执行上下文 ID 为 0 工作人员、当前保留的并行工作人员和所需的并行工作人员保留。如果所需的并行工作人员预留将使该总和超过“最大工作人员计数”,则候选 DOP 将降级,直到所需的预留符合“最大工作人员数量”。

    允许的内存授予还可以减少查询的候选 DOP。我最常看到这种情况,而且可能只在列存储批量插入中看到——如果我想要 DOP 8,但优化器估计查询执行的允许内存授予太小而无法很好地执行批量插入,候选的 dop 将会降低。

    当然,在选择查询计划时,如果成本低于并行计划成本,则可以选择串行查询计划而不是并行计划。

    但是……如果成本太低就不行。有一个实例范围的设置“Parallelim 的成本阈值”。默认 CTFP 为 5。如果串行计划的成本低于 CTFP,则不会选择并行计划(不受 ENABLE_PARALLEL_PLAN_PREFERENCE 提示之类的影响)。

    • 4
  2. Best Answer
    J.D.
    2022-06-03T11:03:17+08:002022-06-03T11:03:17+08:00

    除了 sqL_handle 所说的,你正在运行ALTER DATABASE SCOPED CONFIGURATION,关键字是database。如果您阅读文档sys.configurations,他们会说此系统视图“包含系统中每个服务器范围的配置选项值的一行。 ”所以简而言之,它们是您正在比较的两个不同的配置选项,数据库与服务器。

    • 3

相关问题

  • SQL Server - 使用聚集索引时如何存储数据页

  • 我需要为每种类型的查询使用单独的索引,还是一个多列索引可以工作?

  • 什么时候应该使用唯一约束而不是唯一索引?

  • 死锁的主要原因是什么,可以预防吗?

  • 如何确定是否需要或需要索引

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve