分析并行SQL中的各个元素

日期: 2010-11-21 作者:Guy Harrison翻译:冯昀晖 来源:TechTarget中国 英文

接上文:理解并行SQL的概念   并行处理和并行度   并行度(DOP)定义了将被创建的执行并行流的数量。最简单的情况,它可以理解为分配为支持你SQL执行的并行伺服进程的数量。然而,并行进程的数量更多的时候是DOP的两倍。这是因为重要的执行计划中的每一步都需要把数据供给后续步骤,因此要分配两个进程组维护并行处理流。

  图 2 并行执行。   例如,如果语句包含全表扫描,一个“ORDER BY”和一个“GROUP BY”,需要三组并行进程:一个用来扫描,一个用来排序,一个用来分组。因为Oracle会重用第一组并行进程(就是执行扫描的那个进程)来执行第三个操作(Group By操作),所以实际上……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

接上文:理解并行SQL的概念

  并行处理和并行度

  并行度(DOP)定义了将被创建的执行并行流的数量。最简单的情况,它可以理解为分配为支持你SQL执行的并行伺服进程的数量。然而,并行进程的数量更多的时候是DOP的两倍。这是因为重要的执行计划中的每一步都需要把数据供给后续步骤,因此要分配两个进程组维护并行处理流。

  图 2 并行执行。

  例如,如果语句包含全表扫描,一个“ORDER BY”和一个“GROUP BY”,需要三组并行进程:一个用来扫描,一个用来排序,一个用来分组。因为Oracle会重用第一组并行进程(就是执行扫描的那个进程)来执行第三个操作(Group By操作),所以实际上只需要两组进程。这种方法的结果是,分配的并行伺服永远不会超过DOP的两倍。

  图3展示了并行伺服如何被为2个DOP进行分配。

  并行伺服池

  Oracle服务器维护一个并行伺服进程池,这些进程对于并行操作可用。

  图3 2个DOP的并行进程分配。

  数据库配置参数是“PARALLEL_MIN_ SERVERS”和“PARALLEL_MAX_SERVERS”决定了该池的初始尺寸和最大尺寸。如果当前没有足够的伺服处于激活状态,而且该池也没有达到它的最大值,Oracle将创建更多伺服进程。在经历过可配置的迟钝期之后,伺服进程将关闭,直到该池再次达到它的最大尺寸。

  如果没有足够的查询进程来满足你的语句发起的DOP请求,就会出现如下结果之一:

  •   如果有一些并行查询伺服可用,但是数量少于你的SQL语句要求的数量,你的语句可能以减少的DOP运行。
  •   如果没有并行查询伺服可用,你的语句可能会串行运行。
  •   在特定情况下,你可能会遇上一个错误。这种情况只会在数据库参数“PARALLEL_MIN_PERCENT”被设置为比请求的可用伺服百分比高的情况下。
  •   在Oracle 11g R2以及之前的版本,你的SQL执行可能被延迟,直到有充足的并行服务器可用。

相关推荐

  • 使用Oracle SQL Access Advisor改善数据库索引与物化视图

    当针对表集增加物化视图(materialized view)和索引时,理论上这些表的查询性能会得到改善。但事实上并不一定能达到理想的状态。

  • 用Oracle分段空间管理功能改进数据库性能

    如果Oracle数据库表出现大量碎片数据,则会浪费磁盘空间和严重影响性能。这时可以使用Oracle分段空间管理功能,特别是Oracle数据库分段压缩功能。

  • 在SQL中使用SELECT进行算术运算

    如何在不使用SQL算术运算符而仅仅使用SELECT的情况下完成数学运算,Oracle数据库专家给出了解答。

  • Oracle并行SQL指南

    没有并行技术的时候,一个会话只能利用CPU或者磁盘设备其中之一。结果,串行执行SQL语句不能利用整个计算机的处理能力。并行执行使得单个会话和SQL语句能利用多个CPU和磁盘设备的处理能力。