【 使用环境 】生产环境 or 测试环境
【 OB or 其他组件 】ob, ocp
【 使用版本 】ob 4.4.2 社区版,ocp 4.4.2 社区版
【问题描述】清晰明确描述问题
我在ocp 慢sql 中看到一个慢sql ,update 需要2.7秒(如图一),于是我想看下trace log 中这个sql 为什么这么慢,但是我到对应的observer 上的observer.log 中找这条慢sql ,是空的,这个是为什么,ocp 的慢sql 和集群的慢sql 参数我都配置的1秒
【 使用环境 】生产环境 or 测试环境
【 OB or 其他组件 】ob, ocp
【 使用版本 】ob 4.4.2 社区版,ocp 4.4.2 社区版
【问题描述】清晰明确描述问题
了解了解
可能日志轮转/文件不对:当前 observer.log 可能已是新文件,慢 SQL 发生在旧日志(如 observer.log.20260727*)中;或该 SQL 由其他 OBServer 节点处理,本地无记录 。
explain 下。
根据您的描述,您在 OCP 中发现了一个慢 SQL(更新操作耗时 2.7 秒),但当您尝试在对应的 Observer 的 observer.log 文件中查找该 SQL 的执行日志时,却没有找到相关信息。这种现象可能有以下几个原因:
observer.log 的日志级别是否足够详细,以便包含慢查询的日志信息。通常,需要将日志级别设置为 INFO 或更低级别才能看到详细的 SQL 执行日志。observer.log 文件进行了滚动(例如,按时间或大小滚动),那么您可能需要检查其他日志文件,如 observer.log.1、observer.log.2 等。检查慢查询日志配置:
-- 查看当前慢查询日志配置
SHOW VARIABLES LIKE 'slow_query_log';
SHOW VARIABLES LIKE 'long_query_time';
-- 设置慢查询日志阈值为 1 秒
SET GLOBAL slow_query_log = 1;
SET GLOBAL long_query_time = 1;
检查日志级别:
observer.log 的日志级别是否为 INFO 或更低。可以通过以下命令查看和设置日志级别:-- 查看当前日志级别
SHOW VARIABLES LIKE 'log_level';
-- 设置日志级别为 INFO
SET GLOBAL log_level = 'INFO';
检查日志文件滚动:
observer.log 文件进行了滚动,请检查其他日志文件,如 observer.log.1、observer.log.2 等,以确保没有遗漏相关日志信息。检查 SQL 优化情况:
EXPLAIN 命令来查看其执行计划,以进一步分析性能瓶颈。通过以上步骤,您应该能够找到慢 SQL 的执行日志并进一步分析其性能问题。如果仍然无法找到相关信息,建议联系 OceanBase 的技术支持团队以获取更多帮助。
详情请参考:
说的不对,不要误导大家
学习了,sql_audit
找到原因了,是因为虽然设置了慢sql 参数 trace_log_slow_query_watermark = 1s,
但是这并不会让observer 把 慢sql 记录到observer.log 中,还要设置
这里有介绍
enable_record_trace_log 参数的主要作用是将 OBServer 端的慢 SQL 执行日志都记录到 observer.log 日志中去。因此,如果把 enable_record_trace_log 参数设置 false,会导致在 observer.log 日志中查看不到 slow query 的信息。
666
小助手回答的有问题
学习了
了解