You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

数据库SHARED提示与PARALLEL提示的差异及执行结果疑问

SHARED与PARALLEL提示的差异咨询

我在数据库中发现一条使用SHARED提示的查询语句:

SELECT /*+ SHARED (8) */ ID from tab1

查看其执行计划后,发现包含代表并行执行的px send qc操作,执行计划如下:

-----------------------------------------------------------------------------------------
| Id | Operation                 | Name            | Rows     | Bytes     | Cost | Time |
-----------------------------------------------------------------------------------------
|  0 | SELECT STATEMENT          |                 | 58773659 | 235094636 | 7389 |      |
|  1 |   PX COORDINATOR          |                 |          |           |      |      |
|  2 |    PX SEND QC (RANDOM)    | :TQ10000        | 58773659 | 235094636 | 7389 |      |
|  3 |     PX BLOCK ITERATOR     |                 | 58773659 | 235094636 | 7389 |      |
|  4 |      INDEX FAST FULL SCAN | IDX_RTEST3      | 58773659 | 235094636 | 7389 |      |
-----------------------------------------------------------------------------------------

当我使用PARALLEL提示执行查询:

select /*+parallel(8) */ ID from tab1

得到了相同的执行结果,想咨询SHARED提示与PARALLEL提示之间的差异是什么?


差异说明
  • 资源复用逻辑不同
    SHARED提示会从Oracle的共享并行服务器池中获取进程,这些进程可被多个查询复用,查询结束后不会立即销毁,能减少进程创建、销毁的额外开销;默认情况下PARALLEL提示使用专用并行进程,这类进程为当前查询专属创建,任务完成后会被终止(或按参数设置延迟释放),无法被其他查询复用。

  • 适用场景有区别
    SHARED适合短时间、高频次的并行查询,能显著降低资源调度的消耗;PARALLEL更适合长耗时、资源密集型的并行任务,专属进程可避免共享池资源竞争,保障任务的资源供给。

  • 参数依赖不同
    SHARED提示的生效依赖PARALLEL_SERVERS_TARGET等共享并行相关参数配置,只有共享池有可用进程时才能触发并行;PARALLEL提示的基础生效仅需开启并行功能(比如合理设置PARALLEL_MAX_SERVERS参数),无需依赖共享池配置。

  • 后台执行逻辑差异
    虽然两者的执行计划表面相似(都包含PX系列并行操作),但后台进程的归属完全不同:SHARED的并行进程属于共享池,受共享资源池的调度限制;PARALLEL的专用进程独立于共享池,仅服务于当前查询,调度更灵活但资源复用性差。


内容的提问来源于stack exchange,提问作者Baalback

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 13:45:13