ob: 社区版4.4.1.0
部署:3台配置一样的ecs
今天发现,一个sql,在1,2上面执行都是正常的,但是3却一直报超时(50秒)
用top命令查看,3这个cpu占用经常在200%以上,其他两个大多在150%以下
ocp上看,也是占用要高一些
请教如何排除?
ob: 社区版4.4.1.0
部署:3台配置一样的ecs
今天发现,一个sql,在1,2上面执行都是正常的,但是3却一直报超时(50秒)
用top命令查看,3这个cpu占用经常在200%以上,其他两个大多在150%以下
ocp上看,也是占用要高一些
请教如何排除?
看执行计划。可能那个节点的执行计划跟其他节点不一样
plan_ob3.txt (85.3 KB)
plan_ob1.txt (85.0 KB)
执行explan extented xxx,
ob1是正常节点的log
ob3是异常节点的log
麻烦帮忙分析一下,谢谢!
节点1的执行计划能接受,可以直接用节点1的执行计划绑定下。
请指教如何操作?
用ocp的话,ocp界面SQL诊断,找到这条SQL,详情里面执行计划那可以直接绑定。
用命令行就是建 Outline,参考:
https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001431842
先用obdiag收集一下 plan_monitor
obdiag gather plan_monitor --trace_id YB420BA2D99B-0005EBBFC45D5A00-0-0 --env “{db_connect=’-hxx -Pxx -uxx -pxx -Dxx’}”
https://www.oceanbase.com/docs/common-obdiag-cn-1000000004494424
看一下文档 是从gv$ob_sql_audit查出来的
我试了几次,最后都是提示ob_sql_audit is empty,感觉这个ob_sql_audit表清得很快,有没有参数设置大小的?
可以通过调整 ob_sql_audit_percentage 系统变量来控制 SQL Audit 所使用的内存占租户内存的百分比。默认情况下,ob_sql_audit_percentage 设置为 3,表示 SQL Audit 使用的内存占租户内存的 3%。你可以根据需要调整这个百分比,范围是 [0, 80]。
https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000004478746