接上文:理解并行SQL的概念 并行处理和并行度 并行度(DOP)定义了将被创建的执行并行流的数量。最简单的情况,它可以理解为分配为支持你SQL执行的并行伺服进程的数量。然而,并行进程的数量更多的时候是DOP的两倍。这是因为重要的执行计划中的每一步都需要把数据供给后续步骤,因此要分配两个进程组维护并行处理流。
图 2 并行执行。 例如,如果语句包含全表扫描,一个“ORDER BY”和一个“GROUP BY”,需要三组并行进程:一个用来扫描,一个用来排序,一个用来分组。因为Oracle会重用第一组并行进程(就是执行扫描的那个进程)来执行第三个操作(Group By操作),所以实际上……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属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和磁盘设备的处理能力。