PolarDB-X 2.0联合日志服务推出SQL审计与分析功能,将SQL审计日志投递到日志服务中,实现了日志的实时查询、可视化分析、告警、投递、加工等操作。本文介绍SQL审计日志相关的信息。

功能优势

  • 操作简单:仅需在控制台上打开功能开关,即可实时进行SQL日志的审计与分析。
  • 性能无损:日志服务能够实时拉取PolarDB-X 2.0实例下各数据库的SQL审计日志文件,对实例本身性能无影响。
  • 实时分析:依托日志服务,提供实时日志分析、开箱即用的报表中心和下钻分析的功能,帮助您准确地了解数据库执行状况、性能和安全问题。
  • 实时告警:支持基于特定指标定制近实时的监测与告警,当关键业务出现异常时可通过多种途径通知告警。

注意事项

  • SQL审计日志默认保存45天。
  • 日志服务会不定期更新SQL日志审计功能,专属日志库的索引与默认报表也会自动更新,请勿在日志服务控制台上随意删除或修改PolarDB-X 2.0的Project、Logstore、索引和仪表盘等配置。
  • PolarDB-X 2.0SQL审计与分析功能本身免费使用,但日志服务会对存储空间、读取流量、请求数量、数据加工、数据投递等进行收费,详情请参见日志服务产品定价
  • SQL审计与分析功能默认关闭,您可以在PolarDB-X 2.0控制台上随时开启SQL审计与分析
  • 功能关闭后将不再向日志服务写入数据,但您仍可以查看历史数据,这部分历史数据会产生存储和索引费用。您可以删除所有数据来停用日志服务,日志停止服务后将不再计费。

应用场景

  • 问题SQL排查

    开启SQL审计与分析功能后,您可以通过快速检索SQL日志排查定位问题。例如您可以使用如下命令查询响应时间超过1s的所有SQL:

    __topic__:polardbx_sqlaudit and instance_id:pxc-*************** and response_time >= 1000 | select sql, response_time 
    问题SQL排查

    如上图所示,您可以在查询结果查看目标SQL的执行时间、执行该SQL的客户端IP地址等信息。

  • 高代价SQL模板分析

    大多数应用中,SQL通常是基于若干模板动态生成的,只是参数不同。例如,您可以使用如下命令获取目标数据库中的高代价SQL模板信息。

    __topic__:polardbx_sqlaudit and instance_id:pxc-**************** | SELECT sql_code as "SQL模板ID", round(total_time * 1.0 /sum(total_time) over() * 100, 2) as "总体耗时比例(%)" ,execute_times as "执行次数", round(avg_time) as "平均执行时间",round(avg_rows) as "平均影响行数", CASE WHEN length(sql) > 200 THEN  concat(substr(sql, 1, 200), '......') ELSE trim(lpad(sql, 200, ' ')) end as "样例SQL" FROM  (SELECT sql_code, count(1) as execute_times, sum(response_time) as total_time, avg(response_time) as avg_time, avg(affect_rows) as avg_rows, arbitrary(sql) as sql FROM log GROUP BY sql_code) ORDER BY "总体耗时比例(%)" desc limit 10
    应用场景2

    如上图所示,查询结果钟包括SQL模板的ID、该模板SQL占总体SQL的耗时比例、执行次数、平均执行时间、平均影响行数以及样例 SQL等信息。您可以基于该分析结果,找到应用中代价最高的SQL模板,并对其进行优化。

  • 日志报表统计

    为了便于分析问题,PolarDB-X SQL审计与分析功能结合日志服务,提供了开箱即用的日志报表功能,帮助您实时诊断分析数据库的执行状况、性能和潜在安全问题等,详情请参见日志报表