问题现象
该问题会导致执行计划中包含 PX MergeSort + dop=1 + UDF 函数的查询语句 hang 住。
该问题发生的充分条件为:
- SQL 中包含嵌套语句、UDF(全称是 User-Defined Function,表示用户自定义函数)。
- SQL 执行计划为分布式执行计划。
- SQL 中包含 Order by 且要求最终的结果集有序输出。
- SQL 输出的最终结果集里,平均每台 Server 输出的结果集超过 64K。
问题原因
由单 SQC 调度引入,而单 SQC 调度确实有几个场景 (PL UDF,trigger,foreign key 等) 会碰到该问题。
问题风险及影响
在执行 DTL 时导致数据库 hang 住,类似下面这样 wait_unblocking:

影响版本
OceanBase 数据库 V3.1.2、V3.2.3、V3.2.4 版本。
解决方法及规避方式
解决方法:
升级到问题已修复版本,目前已修复 OceanBase 数据库 V3.2.4 BP3 Hotfix1(oceanbase-3.2.4.3-103010022023051317)、V3.2.4 BP3 Hotfix2(oceanbase-3.2.4.3-103020012023051810)版本,V3.2.4 BP4(oceanbase-3.2.4.4-104000052023062021)、V3.2.3 BP8 Hotfix2(ceanbase-3.2.3.3-108020022023051212) 及之后版本。
规避方法:
不使用 UDF 函数以及计划绑定不生成 PX MergeSort 算子,用其他算子等价替换。