问题现象
日志出现 only px support this plan,客户端执行 SQL 异常会收到如下信息。
Not supported feature or function
问题原因
OceanBase 数据库并行执行的框架有旧框架与 PX 框架两种,旧框架是历史版本使用的并行方法,已逐渐被 PX 框架取代。在后来的版本中,默认情况下会使用 PX 框架进行并行执行。有些特定的执行计划只能在 PX 框架下执行,如果 PX 相关的参数设置不合理,可能会导致无法使用 PX 而报错。
适用版本
OceanBase 数据库 V2.x、V3.x 版本。
解决方法
检查如下三个参数是否进行了合理设置。
_ob_use_parallel_executionparallel_max_serversparallel_servers_target
如未正常设置,执行如下 SQL 设置 PX。
obclient > SET GLOBAL parallel_max_servers=xxx;
obclient > SET GLOBAL parallel_servers_target=xxx;
obclient > SET GLOBAL _ob_use_parallel_execution = 1;
说明
- parallel_max_servers 用于设置每台 Server 上并行执行(Parallel eXecution,PX)线程池中的最大线程数,此变量 OceanBase 数据库 V2.x 版本有效,OceanBase 数据库 V3.x 版本不再使用。
- parallel_servers_target 用于设置每个 Server 上的大查询排队条件。当并行执行(Parallel eXecution,PX)消耗的线程数超过大查询排队条件后,后继并行执行需要排队等待。此变量 OceanBase 数据库 V3.x 版本有效。
- _ob_use_parallel_execution 用于判断是否开启并行,0 表示关闭,1 表示开启。