OceanBase 并行执行学习笔记 7 —— 并行执行 PoC QuickStart

2024年 5月 7日 58.4k 0

并行执行是一个复杂的主题,需要经过一段时间的学习,才能准确把握,将并行执行的威力发挥到最大。为了让新手同学快速上手并行执行,提供本 Quick Start,适用于 3.1 及以上任意版本的 OceanBase。这里提供的参数不是最优的,但是可以避免绝大多数 bad case

并行执行系列的内容分为以下七篇博客,本篇是最后一篇。

第一篇 并行执行概念
第二篇 设定并行度
第三篇 并发控制与排队
第四篇 并行执行分类
第五篇 并行执行控制参数
第六篇 并行执行诊断及调优技巧
第七篇 并行执行 PoC QuickStart

环境初始化

在 AP 租户下设置:

/* MySQL */
set global parallel_servers_target = MIN_CPU * 20;

/* Oracle */
alter system set parallel_servers_target = MIN_CPU * 20;

统计信息搜集

3.x 版本的统计信息搜集跟合并绑定,所以在导入数据之后,需要发起一轮合并才能保证统计信息的搜集。

4.x 版本在导入数据之后,可以直接调用 DBMS_STAT 统计信息包搜集统计信息。

HINT 设置

每条 SQL 的并行度(DOP),最大不要超过物理CPU 数量的 1.5 倍。

一般来说,如果没有多个 SQL 并发执行,单条 SQL 的并行度可以设置为 CPU 数

例如,系统的物理CPU 数为 32,那么 HINT 就设置为 /*+ PARALLEL(32) */

性能调优

  1. top -H看看租户 CPU 使用情况
  2. 单条 SQL 性能不符合预期,请联系技术支持同学使用 sql_plan_monitor 获取性能报告并进行初步判定,然后可交由 OB 的研发同学进行进一步的分析。

常见问题

  1. Query 查询性能不符合预期,CPU 没用满

请执行 show variables like 'parallel_servers_target确认 target 值不小于 MIN_CPU * 20

2. PDML 性能不符合预期

请使用 explain extended 解释 PDML,确认计划走了 PDML。如果没有走 PDML,计划最底部的 Note 字段会说明原因。一般是因为被修改的表包含了 trigger、外键、local unique index 等原因。

如果出现 DISTRIBUTED INSERT,DISTRIBUTED UPDATE,DISTRIBUTED DELETE 等字样,就说明没有走 PDML。

3. PDML 超时,内部日志显示出现 -4138 OB_SNAPSHOT_DISCARDED 报错

请调大 undo_retention 参数,使其不小于 PDML 的最大执行时间。它的默认值只有 30min,一旦 PDML 执行时间超过 30min,就可能遇到这个问题,导致执行终止,重试,直到超时。

4. 业务不能做任何修改,如何让业务 SQL 并行起来?

OBProxy 允许用户在 WEB 界面上修改连接配置,开启并行。例如,在读写分离连接上,将全部 SQL 的并行度设置为 2:
OceanBase 并行执行学习笔记 7 —— 并行执行 PoC QuickStart-1

OBProxy 版本 3211bp1 及以上;WEB 界面版本:2023年4月迭代,发布时间五月初。

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论