【SQLServer】并行的保留线程和已使用线程 - abce
source link: https://www.cnblogs.com/abclife/p/16683133.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
【SQLServer】并行的保留线程和已使用线程
2022-09-10 22:51 abce 阅读(44) 评论(0) 编辑 收藏 举报
我们都知道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数据库中以下查询的执行计划:
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值。我来给你展示一下:
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。
Recommend
-
3
1. 另起线程 核心就是threading.Thread: from threading import Thread def square(x): print(x * x) def mul(x, y): print(x * y) if __name__ == "__main__": thread1 = Thread(target=square, args=(10...
-
5
【加速】multiprocessing多线程、多进程、并行、numba 2021年02月13日 Author: Guofei 文章归类: Python语法 ,文章编号: 1208 版权声明:本文作...
-
4
Thread-Level Paralellism 线程级并行2015年12月27日Thread-Level Paralellism (线程级并行)目录(Page1~2)并行计算(硬件)(Page3~12) 在一个芯片上有多个分离的处理器 多个...
-
2
并发和并行、线程和进程,异步和同步之间到底是什么关系? yudotyang · 4天之前 · 260 次点击 ·...
-
9
程序在没有跳转语句的前提下,都是由上至下依次执行,那现在想要设计一个程序,边打游戏边听歌,怎么设计? 要解决上述问题,咱们得使用多进程或者多线程来解决. 🍘并发与并行 并发:指两个或多个事件在...
-
7
【PostgreSQL 】PostgreSQL 15对distinct的优化 2022-07-17 11:34
-
6
【PostgreSQL 15】PostgreSQL 15对UNIQUE和NULL的改进 2022-07-21 23:00
-
19
【MySQL 8】Generated Invisible Primary Keys(GIPK) 2022-07-28 21:43
-
7
JUC(1)线程和进程、并发和并行、线程的状态、lock锁、生产者和消费者问题 推荐 原创 郑同学要...
-
4
【PostgreSQL】PostgreSQL 15移除了Stats Collector 2022-08-28 23:11
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK