要查询某段时间内执行时间排名 TOP N 的请求,您可以使用慢查询日志或审计日志,并结合时间范围条件。以下是一些建议的方法:

1. 使用慢查询日志查询 TOP N 请求:
   - 配置慢查询日志并设置合适的时间范围,以获取在指定时间段内执行时间最长的 SQL 语句。
    -- 开启慢查询日志
    ALTER SYSTEM SET slow_query_time = '1'; -- 设置慢查询时间阈值,单位为秒

    -- 查询慢查询日志,按照执行时间降序排列
    SELECT * FROM information_schema.SLOW_QUERY WHERE sql_execute_start >= 'start_time' AND sql_execute_start <= 'end_time' ORDER BY total_execution_time DESC LIMIT N;

   - 替换 'start_time' 和 'end_time' 为您想要的时间范围,这将返回在指定时间段内执行时间最长的前 N 条慢查询记录。

2. 审计 SQL 查询并查询 TOP N:
   - 启用 SQL 审计并配置审计选项,以记录 SQL 语句的执行情况。
    ALTER SYSTEM SET audit_enable = true;
    ALTER SYSTEM SET audit_event = 'sql_statement';

   - 查询审计日志,按照执行时间降序排列,获取在指定时间段内执行时间最长的前 N 条 SQL 语句。
    SELECT * FROM information_schema.AUDIT_RECORD WHERE occur_time >= 'start_time' AND occur_time <= 'end_time' AND sql_execute_total_elapsed_time IS NOT NULL ORDER BY sql_execute_total_elapsed_time DESC LIMIT N;

   - 替换 'start_time' 和 'end_time' 为您想要的时间范围。

请注意,这些查询中的时间条件应根据您实际需要的时间段进行调整。确保在非生产环境中测试这些查询,以避免对实际业务产生负面影响。


转载请注明出处:http://www.zyzy.cn/article/detail/11796/OceanBase