我们正在与一个坚持使用MAXDOP =1(我知道.)的供应商合作。他们还强调了在不同磁盘上对我们的数据文件进行条带化的重要性。
据我所知,I/O操作总是与CPU周期配对。因此,如果我们有分布在不同磁盘上的表,那么MAXDOP =1会不会按顺序而不是并行地进行读/写呢?
发布于 2021-08-14 04:14:49
.难道MAXDOP =1不会使读/写按顺序进行而不是并行进行吗?
不是的。Server几乎完全使用异步I/O。任何工作人员都可以发出I/O请求,然后将其传递给操作系统和I/O子系统来完成。
在后台处理以前发出的I/O请求时,工作人员可以自由地执行其他工作(与查询相关,甚至可以发出更多异步I/O)。
通过这种方式,Server甚至可以从单个工作线程驱动高I/O吞吐量,例如使用超前阅读。Server管理发出的I/O请求的总数和深度,以最大限度地提高吞吐量,同时保持良好的响应时间。
跨多个I/O子系统划分数据的一个主要好处是提高了SQL Server可用的总I/O带宽。如果有多个I/O路径可用,Server将尝试将每条路径驱动到其最大容量。
虽然发出(并随后完成)异步I/O并不是一项特别耗时的活动,但并行查询中的多个线程可能比单个工作人员更难驱动I/O。即使如此,在单个线程上运行多个并发查询的系统(每个线程都会发出大的预读)可以很容易地满足即使是非常有能力的I/O系统。
https://dba.stackexchange.com/questions/298023
复制相似问题