【学习散记9之---并行查询处理】

本文介绍了SQL Server中的并行查询处理,包括并行执行的概念、交换运算符的三种类型,以及并行与串行处理的区别。文章还讨论了优化器不选择并行执行计划的因素,以及并行度的确定因素,如CPU数量、线程可用性、查询复杂度等。并行索引操作在多处理器系统中可提升性能,其并行度受CPU数量、max degree of parallelism配置及工作阈值限制。
摘要由CSDN通过智能技术生成

                                                                               并行查询处理

                                      ps:msdn摘入 


 概念:并行执行的查询或者索引操作. 当SQL SERVER将交换运算符放入查询执行计划中的时候就变成了并行查询计划.
 
 何为交换运算符:在查询执行计划中提供进程管理、数据再分发和流控制的运算符。
          一般包含三个:分别是 Distribute Streams、Repartition Streams 和 Gather Streams 逻辑运算符,其中的一个或多个运算符会出现在并行查询的查询计划的显示计划输出。
            Distribute Streams:仅用于并行查询计划。它接收记录的单个输入流,并生成多个输出流。(单输入多输出)
            Repartition Streams:处理多个流并生成多个记录流。如果查询优化器使用位图筛选器,则输出流中行的数量将减少。(多输入多输出)
            Gather Streams :仅用在并行查询计划中。它处理几个输入流并通过组合这几个输入流生成单个记录输出流。(多输入单输出)
 
 并行处理和串行处理的区别:
     1.并行查询执行计划可以使用多个线程。非并行查询使用的串行执行计划仅使用一个线程来实现执行。
     2.并行查询的执行必须要具是有多个微处理器 (CPU) 的计算机,非并行查询则不是.
     
 优化器不考虑使用并行执行计划的因素:(满足一个就不使用并行执行计划)
       1.查询的串行执行成本并不过高,无需考虑替代的并行执行计划。
       2.对于特定的查询,认为串行执行计划快于任何可能的并行执行计划。
       3.查询包含无法并行运行的标量运算符或关系运算符。
 
  并行查询使用的实际线程数在查询计划执行初始化时确定,并由计划的复杂程度和并行度确定。
  这里提到了一个并行度的概念.SQL server能自动检测最佳并行度。此操作由以下因素决定:
     a.SQL Server 是否运行在具有多个微处理器或 CPU 的计算机。
     b.可用的线程是否足够:查询或者索引操作时需要一定线程数的,并行查询需要更多。当无法满足并行的线程需要的时候,SQL会自动减少并行度甚至放弃并行执行,改成串行查询.
     c.所执行的查询或索引操作的类型:创建索引、重新生成索引或删除聚集索引等索引操作,以及大量占用 CPU 周期的查询最适合采用并行计划。
     d.待处理的行数是否足够:如果查询优化器确定行数太少,则不引入交换运算符来分发行。
     e.当前的分发内容统计信息是否可用:如果不能达到最高并行度,则在放弃并行计划之前会考虑较低的并行度。


 并行度和进程数:如果可以确保并行执行,则数据库引擎将确定最佳线程数,并在这些线程间分配并行计划的执行。
         从查询或索引操作开始在多线程上并行执行起,将一直使用相同的线程数,直到操作完成。
         每次从过程缓存中检索执行计划时,数据库引擎都将重新检查最佳线程数决策(第一次执行某个查询时最终采用了串行计划,后来第二次执行相同的查询将使用三个线程的并行计划)


 并行索引操作:为创建或重新生成索引或删除聚集索引的索引操作而生成的查询计划允许在有多个微处理器的计算机上执行并行、多线程操作。
        当 数据库引擎生成一个索引执行计划时,并行操作数将设置为下列各项中的最低值:
        1)计算机中的微处理器 (CPU) 数。
        2)max degree of parallelism 服务器配置选项中指定的数目。
        3)尚未超过为 SQL Server 线程执行的工作的阈值的 CPU 数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值