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
    • 最新
    • 标签
主页 / server / 问题 / 124519
Accepted
Lieven Cardoen
Lieven Cardoen
Asked: 2010-03-21 01:42:00 +0800 CST2010-03-21 01:42:00 +0800 CST 2010-03-21 01:42:00 +0800 CST

在 sql server 上使用并行有什么危险?

  • 772

在我们的一个客户中,将 sql server 配置为 1 以表示并行度。服务器有 8 个 cpu,那么将这个度数限制为 1 的原因是什么?

sql-server
  • 3 3 个回答
  • 547 Views

3 个回答

  • Voted
  1. Best Answer
    Chris S
    2010-03-21T06:35:06+08:002010-03-21T06:35:06+08:00

    SQL Server 已经将多个查询发送到多个 CPU(如果获得许可)。在较大的查询中,它可以通过启用并行性来打破跨多个线程(可能还有 CPU)的单个查询。

    您应该设置并行度以匹配大型查询的一般大小。如果您经常使用 72 连接查询访问数据库,请将其设置为与服务器拥有(或获得许可)一样多的 CPU。如果您经常使用小查询访问服务器,或者您不希望更大的查询占用所有 CPU,则将其设置为更保守的数字(如 1)。

    这些是非常通用的指南,来自 MS 的更多信息Parallel Query Processing,以及并行度设置。

    • 4
  2. SqlACID
    2010-03-21T07:38:46+08:002010-03-21T07:38:46+08:00

    我经常看到的场景是一个查询在并行执行时导致自身死锁;这通常是索引错误或更新/删除编写不佳的标志,但有些人会走快速而肮脏的路线并关闭并行性以避免死锁。

    • 1
  3. Eldergriffon
    2014-02-21T10:00:48+08:002014-02-21T10:00:48+08:00

    以下是我的回答,纯粹基于我的经验和有限的知识:

    SQL Server 似乎主要根据这是否有助于该查询的单次执行更快地返回来决定是否在查询计划中使用并行性。大多数时候,这种评估是相当准确的。有时,优化器可能会做出不太好的选择。但在任何一种情况下,它都没有考虑到该服务器还发生了什么。特别是,如果您运行的服务器每秒处理大量批处理请求,并且这些批处理中的很大一部分正在并行化,您可能会遇到线程不足。也就是说,调度程序都忙于处理并行化的请求或等待它们,没有任何东西可以处理。这可能表现为 SQL Server 无响应。请注意,您可能不一定会看到 100% 的 CPU 利用率。您使用的不是 CPU,而是可用的调度程序。通常,您将等待大量 CX_PACKET 和可能的 THREADPOOL 等待,并且跨调度程序的平均可运行任务计数高于 1。

    在某些商店中,工作负载非常复杂,以至于做出了完全消除并行性以完全防止此问题的战略决策。据我所知,这在某些情况下可以很好地工作,尽管我曾与微软工程师交谈过,他们认为这是一个被误导且本质上是坏主意。在这种情况下,您无法通过并行性加速查询,因此执行时间通常与 CPU 利用率成正比。这是一个可以接受的折衷方案,尤其是当您的大多数批处理请求都很小时。

    • 0

相关问题

  • sql server 连接字符串上的网络数据包大小以提高吞吐量

  • 基于 Microsoft 的服务器(IIS、MSSQL 等)上的病毒扫描应排除哪些内容?

  • SQL 洗衣清单

  • OPENROWSET、二进制文件、varchars 和 varbinaries

  • 聚集索引与非聚集索引?

Sidebar

Stats

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

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

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

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve