user369117 Asked: 2012-02-22 01:59:00 +0800 CST2012-02-22 01:59:00 +0800 CST 2012-02-22 01:59:00 +0800 CST SQL Server 是否并行执行查询? 772 SQL Server 是否并行执行查询?换句话说,如果我运行一个需要 10 秒执行的繁重查询,同时启动另一个需要 10 秒的繁重查询,那么第二个查询实际上会在 10 秒后启动,还是它们会同时启动? sql-server 6 个回答 Voted Best Answer gbn 2012-02-22T02:47:37+08:002012-02-22T02:47:37+08:00 你的意思是“同时”。答案是肯定的,但注意事项过于广泛,无法在此讨论。事实上,RDBMS 的全部意义在于并发性。 “并行”在 SQL Server 中具有精确的含义:“单个查询分布在多个处理器内核上”。 Ash Burlaczenko 2012-02-22T02:02:10+08:002012-02-22T02:02:10+08:00 只要您的第一个查询没有锁定您的第二个查询所需的表,它们就会并行运行。 Guffa 2012-02-22T02:15:23+08:002012-02-22T02:15:23+08:00 查询尽可能并行运行。 数据库对行、块或整个表使用不同的读取和写入锁,具体取决于您执行的操作。 如果一个查询只从一个表中读取,另一个查询也可以同时从同一个表中读取。如果一个查询更新了表中的某些记录,则另一个查询可能仍然能够从表中读取,只要它不读取为更新而锁定的任何记录。 Arvo 2012-02-22T02:01:09+08:002012-02-22T02:01:09+08:00 取决于数据 - 通常它们并行运行,但某些锁定方案可能会导致一个查询等待另一个查询。当然,如果磁盘子系统很弱并且您没有足够的 RAM,则多个查询可能会运行得更慢。 Saiyam Patel 2012-02-22T02:16:31+08:002012-02-22T02:16:31+08:00 DDL(数据定义语言)像 SELECT 语句一样并行工作 DML(数据修改语言)不像 INSERT 和 UPDATE 语句那样并行工作 Pankaj 2012-02-22T08:07:36+08:002012-02-22T08:07:36+08:00 如果您正在编写如下查询...它将并行运行 SET XACT_ABORT ON Begin Try Begin Tran --Your Sql Statement Commit Tran End Try Begin Catch Rollback Tran End Catch 注意- 如果表中的任何批量插入,您的并行查询将进入等待状态
你的意思是“同时”。答案是肯定的,但注意事项过于广泛,无法在此讨论。事实上,RDBMS 的全部意义在于并发性。
“并行”在 SQL Server 中具有精确的含义:“单个查询分布在多个处理器内核上”。
只要您的第一个查询没有锁定您的第二个查询所需的表,它们就会并行运行。
查询尽可能并行运行。
数据库对行、块或整个表使用不同的读取和写入锁,具体取决于您执行的操作。
如果一个查询只从一个表中读取,另一个查询也可以同时从同一个表中读取。如果一个查询更新了表中的某些记录,则另一个查询可能仍然能够从表中读取,只要它不读取为更新而锁定的任何记录。
取决于数据 - 通常它们并行运行,但某些锁定方案可能会导致一个查询等待另一个查询。当然,如果磁盘子系统很弱并且您没有足够的 RAM,则多个查询可能会运行得更慢。
DDL(数据定义语言)像 SELECT 语句一样并行工作
DML(数据修改语言)不像 INSERT 和 UPDATE 语句那样并行工作
如果您正在编写如下查询...它将并行运行
注意- 如果表中的任何批量插入,您的并行查询将进入等待状态