自学内容网 自学内容网

快速上手并行执行——《OceanBase 并行执行》 系列 7

并行执确实是一个涵盖多个层面的复杂主题,它需要投入一定的时间和精力来深入理解,才能充分掌握其功能。为了帮助初学者更快地掌握并行执行的技巧,我们提供了这份Quick Start,它适用于 OceanBase  3.1版本及以上的版本。虽然这里所提供的参数并非一定是最优配置,但已经能够避免绝大多数潜在的问题情况。

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

并行执行概念
如何手动设置并行度
并行执行线程资源管理方式
并行执行的4种类别
并行执行参数的应用技巧
如何进行并行执行的诊断与调优 
快速上手并行执行​​​​​​​

环境初始化

在 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:

1705633920

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


原文地址:https://blog.csdn.net/OceanBaseGFBK/article/details/138009567

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!