SQL Server是否并行执行查询?


10

SQL Server是否并行执行查询?换句话说,如果我运行一个耗时10秒的繁重查询,并且同时启动另一个耗时10秒的繁重查询,则第二个查询实际上会在10秒后启动,还是它们会同时启动?


1
没有真正的答案,请阅读有关连接池和锁定机制的信息

2
有关SQL Server工作者和合作调度机制IMO的更多相关信息。通常,您的问题的答案是“是”。
马丁·史密斯

Answers:


14

您的意思是“同时”。答案是肯定的,这里有很多警告需要讨论。实际上,RDBMS的重点是并发。

在SQL Server中,“并行”具有精确的含义:“单个查询分布在多个处理器核心上”。



5

查询尽可能并行运行。

数据库根据行的用途对行,块或整个表使用不同的锁进行读写。

如果一个查询仅从表中读取,则另一个查询也可以同时从同一表中读取。如果一个查询更新了表中的某些记录,则另一个查询可能仍然能够从表中读取,只要它不读取针对该更新而锁定的任何记录。


2

取决于数据-通常它们并行运行,但是某些锁定方案可能导致一个查询等待另一个查询。当然,如果磁盘子系统很弱并且您没有足够的RAM,则多个查询的运行速度可能会变慢。


0

DDL(数据定义语言)像SELECT语句一样并行工作
DML(数据修改语言)不像INSERT和UPDATE语句一样并行工作


SELECT不是DDL语句
-a_horse_with_no_name

-1

如果您正在编写如下查询...它将并行运行

SET XACT_ABORT ON
Begin Try
     Begin Tran
        --Your Sql Statement
     Commit Tran
End Try
Begin Catch
    Rollback Tran
End Catch

注意 -如果在表中进行批量插入,则并行查询将进入等待状态

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.