赞
踩
并行执确实是一个涵盖多个层面的复杂主题,它需要投入一定的时间和精力来深入理解,才能充分掌握其功能。为了帮助初学者更快地掌握并行执行的技巧,我们提供了这份Quick Start,它适用于 OceanBase 3.1版本及以上的版本。虽然这里所提供的参数并非一定是最优配置,但已经能够避免绝大多数潜在的问题情况。
并行执行系列的内容分为七篇博客,本篇是最后一篇。
在 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 统计信息包来搜集统计信息。
每条 SQL 的并行度(DOP),最大不要超过物理CPU 数量的 1.5 倍。
一般来说,如果没有多个 SQL 并发执行,单条 SQL 的并行度可以设置为 CPU 数。
例如,系统的物理CPU 数为 32,那么 HINT 就设置为 /*+ PARALLEL(32) */
top -H
看看租户 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:
OBProxy 版本 3211bp1 及以上;WEB 界面版本:2023年4月迭代,发布时间五月初。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。