OB慢查询排查思路主要包括以下几个方面:
ODP组件排查:
- 查看日志:观察obproxy_digest.log和obproxy_slow.log,分析ODP处理总时间、预处理时间、获取连接时间和OBServer执行时间。
- 数据回写延迟:如果ODP处理总时间长但预处理和OBServer执行时间短,检查是否因数据返回和数据写回客户端之间的延迟导致。
OBServer组件排查:
- 租户视图分析:查看租户视图,特别是request_time、sql_id、plan_id等字段,了解SQL执行的详细情况。
- 写入限速监控:监控gv$memstore视图,检查内存使用率,判断是否因内存使用率高导致写入限速。
- 锁等待情况:关注锁等待,检查observer.log中的相关日志,识别是否存在锁等待导致的性能问题。
特定问题排查:
- ODP获取location cache慢:分析获取每个表分区Leader位置的过程,识别获取时间过长的问题。
- 表的路由选择:查看gv$sql_audit视图中的PLAN_TYPE字段,判断执行计划类型,识别是否为远程计划导致的性能瓶颈。
- SQL语句优化:检查SQL语句是否存在问题,如未使用索引、写法不当等,进行必要的优化。
通过以上排查思路,可以系统地定位和解决OB中的慢查询问题。