为什么在select查询中使用PARALLEL ?这里的目的是什么?



为什么在select查询中使用PARALLEL,这里的目的是什么?

谁能解释一下

SELECT /*+ PARALLEL(lds_order_status, 16) */
PO_NO  from lds_order_status
where status = 'CLOSED' group by
PO_NO order by
PO_NO

PARALLEL提示的目的是使用并行威胁运行查询。它基本上是这样工作的:

  • 查询被分成不同的进程。一个称为QC或查询协调器的主进程处理自身(父进程)与PQ从进程或子进程之间的通信。
  • 在可以负担得起CPU和I/O消耗的情况下使用PARALLEL QUERY来加速查询的结果
  • 通常用于数据仓库或ETL应用程序中。对大表进行排序和分组可以通过并行查询获得真正的性能提升。

在您的示例中,查询在一个具有特定度或并行度(后面的数字)的表上使用了HINTPARALLEL

/*+ PARALLEL(lds_order_status, 16) */并行将影响别名lds_order_status的表,它将应用最多16个度(16个从进程)。我的意思是,它将使用最多16,但它可以更少。

对于您来说,阅读有关HINT的文档以及它在不同场景中的工作原理是值得的。

最新更新