培训啦 IT技术

数据库并行查询

教培参考

教育培训行业知识型媒体

发布时间: 2024年12月22日 20:57

2025年【IT技术】报考条件/培训费用/专业咨询 >>

IT技术报考条件是什么?IT技术培训费用是多少?IT技术专业课程都有哪些?

点击咨询
数据库并行查询是指针对查询语句使用并行处理。当目标语句发生全表扫描、全分区扫描及索引快速全扫描的情况时,优化器如果满足一些前提条件下是可以选择使用并行处理的。前提条件有:

1)会话并行查询特性:可以在会话一级启用或禁用并行查询,默认情况下是启用的。启用、禁用命令分别如下:



此外,还可以通过下面查询来查看当前会话是否启用了并行查询。



这个属性可返回enabled、disabled、forced,分别对应启用、禁用和强制。其中,强制是一种特殊的状态,它会强制查询语句指定并行度查询,甚至会覆盖后面讲到的对象并行属性。设置方法如下:



2)SQL语句并行提示:并行提示可以覆盖上面会话级别的设置。一方面,即使在会话级别禁用了并行查询,提示也可以强制执行一个并行操作。唯一可以用来关闭并行查询的方法是将parallel_max_servers设置为0。另一方面,即使在会话级别强制设置了一个并行度,提示还是可以改变另外一个并行度。并行提示是使用来指定的。

3)对象设置并行属性:在SQL语句相关的对象中可设置并行属性,也可使用并行查询。这是在对象定义时指定的,也可以后期修改。

下面通过几个示例,看看如何通过提示、对象属性及强制会话来完成并行查询。下面首先看看使用提示的方式。



下面解释一下执行步骤:

ID=6:扫描表的一部分,具体扫描哪个部分取决于它的父操作(即PX BLOCK ITERATOR)。

ID=5:将全表扫描分解为较小的扫描,这是一个涉及块范围粒度的操作。

ID=4:每个扫描汇总其count(status)的值。

ID=2、3:将每个子结果传递给查询调度进程。从这个执行计划中,可以通过TQ字段识别出哪些操作是由一组从属进程来执行的。

在这个计划中,操作3、4、5、6拥有同样的值(Q1,00),因此它们是由同一组从属进程执行的(从执行计划中无法得知从属进程的数量)。此外需要注意,操作3中的从属进程与查询调度进程(QC)之间的由并行到串行(P->S)的通信过程非常必要。

ID=1,进一步汇总这些结果,并输出答案。

下面看看使用对象属性的方式。



下面看看使用强制会话的方式。



还要注意一点,会话默认是启动并行查询的,可以将会话关闭。



通过上面的示例可见,并行查询执行计划与普通的串行操作的不同。下面说明在并行操作过程中各部分之间的关系。在并行执行的执行计划中会使用并行操作之间的下列关系。在dbms_xplan产生的输出中,并行操作之间的关系是通过字段IN-OUT来提供的。

并行到串行(P->S):并行操作发送数据到串行操作。通常是并行进程将数据发给并行调度进程。

并行到并行(P->P):一个并行操作发送数据给另一个并行操作。当存在两组从属进程时就会用到它。

并行与父操作合并(PCWP):执行计划中的相同从属进程并行执行一个操作及其父操作(父操作也是并行的)。因此,没有通信发生。

并行与子操作合并(PCWC):执行计划中的相同从属进程并行执行一个操作及其子操作(子操作也是并行的)。因此,没有通信发生。

串行到并行(S->P):一个串行操作发送数据给并行操作。由于大部分时间这个操作的效率都较差,因此应该避免使用它。有两个情况会产生这个操作。一个是单一进程产生数据的速度可能没有多个进程消费数据的速度快。如果是这样,消费者可能花费更多的时间来等待数据而不是真正地处理数据。另一个是,串行执行的操作和并行执行的操作发送数据需要一些不必要的通信。

985大学 211大学 全国院校对比 专升本

温馨提示:
本文【数据库并行查询】由作者教培参考提供。该文观点仅代表作者本人,培训啦系信息发布平台,仅提供信息存储空间服务,若存在侵权问题,请及时联系管理员或作者进行删除。
我们采用的作品包括内容和图片部分来源于网络用户投稿,我们不确定投稿用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的权利,请联系我站将及时删除。
内容侵权、违法和不良信息举报
Copyright @ 2024 培训啦 All Rights Reserved 版权所有. 湘ICP备2022011548号 美国留学 留求艺