OceanBase如何查看表是否开了并行扫描

【 使用环境 】生产环境 or 测试环境
【 OB or 其他组件 】4.2.5
【 使用版本 】社区版
【问题描述】OceanBase如何查看表是否开了并行扫描,有相关视图和参数吗
【复现路径】问题出现前后相关操作
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):

【SOP系列 22 】——故障诊断第一步(自助诊断和诊断信息收集)

【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!

@论坛小助手

1 个赞

需要根据执行计划来判定,或者OCP中的PARALLEL SQL来确定,没有专门的历史视图存储表是否开启了并行扫描,可以查看表或者索引的信息,看下是否创建表或者索引时候指定了并行度

2 个赞

@论坛小助手

根据文档库中的信息,您可以使用系统视图 (G)V$OB_SQL_AUDIT 来查看并行执行的运行状态以及一些统计信息。此视图包含多个字段,其中与并行执行相关的字段为:qc_iddfo_idsqc_idworker_id。如果这些字段中有非空值,则表示查询启用了并行执行。

此外,您还可以通过检查 SQL 语句中是否使用了 PARALLEL Hint 或者设置了相关系统变量来确定是否开启了并行扫描。例如:

  • 表级别的 PARALLEL Hint:

    /*+ PARALLEL(table_name n) */
    
  • 全局并行度 Hint:

    /*+ PARALLEL(n) */
    
  • 系统变量配置 DOP(Degree of Parallelism):

    • 可以通过查询系统表或使用 SHOW VARIABLES 命令查看当前设置。

为了更具体地了解某个表是否开启了并行扫描,建议结合实际执行计划 (EXPLAIN) 和上述提到的视图来进行分析。如果需要进一步确认,请提供具体的 SQL 语句和执行上下文以便给出更加准确的答案。

参考文档:(G)V$OB_SQL_AUDIT

请注意,在复杂查询中,调度器可以调度 2 个 DFO 并行流水执行,此时启用的 Worker 数量为并行度的 2 倍,即 PARALLEL * 2。因此,在分析时也要考虑到这一点。

详情请参考:

  1. 启用和关闭并行查询
  2. 并行查询的执行
  3. 数据备份相关视图介绍
  4. 并行开启方式及优先级
  5. 分布式执行计划管理
  6. 表扫描方式规范
  7. 体验 Operational OLAP
  8. OceanBase 数据库社区版 V4.2.0
  9. 日志归档相关视图介绍

__all_table里的dop字段

这个只能看到系统表,看不到业务表

目前确实没有专门的历史视图存储表是否开启了并行扫描