用于监控 SQL 语句的执行性能。它会记录一些执行用时超过 long_query_time 设定值的 SQL 语句, 供用户进行分析、优化、改写,从而提高 SQL 语句的执行效率。 审计日志信息的两个可选存储位置:
① 在系统表 gbase.audit_log 中存放(推荐);
② 在 /opt/gcluster/log/gcluster/gclusterd-audit.log 日志文件中存放(执行SQL的节点); 注:具体存储方式依赖于全局级变量 log_output 的配置。
配置参数:
SET GLOBAL audit_log = 1; --开启日志功能,设置为0即为关闭审计功能,默认为0。 SET GLOBAL log_output = ‘table’; --设置审计信息存储的位置,默认为file。 SET long_query_time=5; --记录超过5s的sql语句,默认为10秒(Build33之后版本无效,使用审计策略替代)。
审计策略
创建语法:
CREATE AUDIT POLICY
配置举例:
CREATE AUDIT POLICY auditpolicy (enable =‘y’, long_query_time = 5); --记录 超过5s的sql语句,默认为0秒
注: 1. 如不指定可选参数,默认所有SQL均会记录至审计日志; 2. 当多条审计策略同时存在时,满足任一审计策略,都会记录至审计日志;
查询策略:
select * from gbase.audit_policy;
审计日志记录的主要内容包括:
• thread_id: 线程号,同 processlist 中的 ID;
• taskid:每个 sql 任务编号;
• start_time:开始执行时间;
• end_time:结束执行时间;
• user_host:登录的用户和 IP,显示格式为:priv_user[user]@hostname[ip];
• user:用户名;
• host_ip: 用户登录端 IP 地址;
• query_time:执行语句所用时间;
• rows:行数;
• db:执行语句所针对的数据库;
• table_list: 涉及表,格式:`
• sql_text:记录执行用时大于 long_query_time 设定值的 SQL 语句;
• sql_type:sql 类型,如 DDL、DML、DQL、OTHERS;
• sql_command: sql 命令类型,如 SELECT、UPDATE,INSERT,LOAD 等;
• operators: 涉及的算子,比如 JOIN、WHERE、GROUP、HAVING 等;
• status:sql 执行状态,如 SUCCESS、FAILED、KILLED 等;
• conn_type:用户登录方式(CAPI、ODBC、JDBC、ADO.NET、STUDIO);




