• 【SQLServer】并行的保留线程和已使用线程


    🚀 优质资源分享 🚀

    学习路线指引(点击解锁)知识定位人群定位
    🧡 Python实战微信订餐小程序 🧡进阶级本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。
    💛Python量化交易实战💛入门级手把手带你打造一个易扩展、更安全、效率更高的量化交易系统

    我们都知道SQL Server的并行执行。为了快速处理一个请求,SQL Server会使用多个线程来处理一个请求。并行执行涉及两个重要的参数设置:·maxdop:最大并行度·并行度的成本阈值:如果任何估计的查询计划成本超过此值,则SQL Server优化器将尝试使用并行。

    现在,回到我们的话题:保留线程(Reserved threads)和已使用线程(Used threads)。

    假设我提交了一个查询,评估出的成本已经超出了并行度的成本阈值。SQL Server决定使用并行执行该查询。在我的测试环境中,maxdop采用的是默认值。也就意味着SQL Server可以使用所有的处理器来执行并行操作。此外,我将并行度的成本阈值设置为0,这样所有的查询都可以使用并行操作(这里只是为了示例)。SQL Server和使用多线程执行任务,且这些任务运行在调度器(schedulers)上。

    与许多其他资源一样,SQL Server也保留了线程。展示一下Adventure Works 2014数据库中以下查询的执行计划:

    ?

    | 12345678910111213 | SELECT [SalesOrderID]``,[SalesOrderDetailID]``,[CarrierTrackingNumber]``,[OrderQty]``,[ProductID]``,[SpecialOfferID]``,[UnitPrice]``,[UnitPriceDiscount]``,[LineTotal]``,[rowguid]``,[ModifiedDate]``FROM [AdventureWorks2014].[Sales].[SalesOrderDetail]``ORDER BY ModifiedDate DESC |

    现在可以右击select node,查看属性:

    在上面的属性中,可以看到SQL Server使用并行度为2。计算此执行的分支为1。保留线程数和已使用线程数为2。

    请记住,保留或使用的线程数并不总是等于查询的MAXDOP值。我来给你展示一下:

    ?

    | 123456 | Select SOD.SalesOrderID, SOD.UnitPrice, SOD.LineTotal,``SOH.TotalDue, SOH.DueDate, SOH.OrderDate``from [Sales].[SalesOrderDetail] SOD``inner join [Sales].[SalesOrderHeader] SOH``on sod.SalesOrderID=SOH.SalesOrderID``ORDER BY SOH.TotalDue DESC |

    现在右击select node,查看属性:

    在上面的属性中,可以看到SQL Server使用了并行度4。这里执行的分支数是2。保留线程数和使用线程数是8。

  • 相关阅读:
    无线渗透理论_WPA安全系统
    源码分析:实现 Actor 系统
    Hadoop集群安装,mysql安装,hive安装
    android studio 移植工程
    高项 07 项目成本管理
    redolog和undolog
    Linux 快捷键
    力扣176. 第二高的薪水
    传奇GOM引擎时装功能如何添加
    C++ Protobuf
  • 原文地址:https://blog.csdn.net/qq_43479892/article/details/126801533