暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

分布式数据库学习Note45:OceanBase社区版中,全局 SQL 审计表如何使用?

GV$OB_SQL_AUDIT


GV$OB_SQL_AUDIT 是全局 SQL 审计表,可以用来查看每次请求客户端来源、执行服务器信息、执行状态信息、等待事件以及执行各阶段耗时等。

sql_audit 相关设置

  • 设置 sql_audit 使用开关。

    obclient> ALTER SYSTEM SET enable_sql_audit = true;
    /*开启 sql_audit*/
    
    obclient> ALTER SYSTEM SET enable_sql_audit = false;
    /*关闭 sql_audit*/
    
  • 设置 sql audit 所使用的内存,占据租户内存的百分比。默认内存百分比为 3,可设置范围为 [0, 80]。

    obclient> SET global ob_sql_audit_percentage = 3;
    Query OK, 0 rows affected
    

SQL Audit 淘汰机制

租户的后台任务每隔 1s 会根据 OBServer 和 SQL Audit 的内存使用情况来决定是否触发淘汰。SQL Audit 内存上限根据 ob_sql_audit_percentage 分配可用的最大内存。

当 SQL Audit 的实际内存使用达到指定阈值时,满足触发淘汰的条件,开启淘汰;当 SQL Audit 的实际内存使用降到指定阈值时,满足停止淘汰的条件,停止淘汰。SQL Audit 淘汰机制如下表所示。

触发机制SQL Audit 内存上限触发淘汰的条件停止淘汰的条件
内存使用[0,64M]内存上限 *50%0 M
内存使用[64M,100M]内存上限-20M内存上限-40 M
内存使用[100M,5G]内存上限 *80%内存上限 *60%
内存使用[5G,+∞]内存上限-1G内存上限-2 G
记录数900 万800万

sql_audit 字段说明

字段名称类型描述
SVR_IPvarchar(46)IP 地址
SVR_PORTbigint(20)端口号
REQUEST_IDbigint(20)请求的 ID 号
SQL_EXEC_IDbigint(20)如果 SQL 计划正在被执行,则显示对应的 SQL ID
TRACE_IDvarchar(128)这条语句的 Trace ID
SIDbigint(20) unsignedSession ID
CLIENT_IPvarchar(46)发送请求的 Client IP
CLIENT_PORTbigint(20)发送请求的 Client Port
TENANT_IDbigint(20)发送请求的租户 ID
TENANT_NAMEvarchar(64)发送请求的租户名称
EFFECTIVE_TENANT_IDbigint(20)租户 ID
USER_IDbigint(20)发送请求的用户 ID
USER_NAMEvarchar(64)发送请求的用户名称
USER_GROUPbigint(20)用户组
USER_CLIENT_IPvarchar(32)发送请求的客户端的 IP
DB_IDbigint(20) unsigned数据库 ID
DB_NAMEvarchar(128)数据库名称
SQL_IDvarchar(32)这条 SQL 的 ID
QUERY_SQLlongtext实际的 SQL 语句
PLAN_IDbigint(20)执行计划 ID
AFFECTED_ROWSbigint(20)影响行数
RETURN_ROWSbigint(20)返回行数
PARTITION_CNTbigint(20)该请求涉及的分区数
RET_CODEbigint(20)执行结果返回码
QC_IDbigint(20) unsigned并行查询中的 qc_id
DFO_IDbigint(20)并行查询中的 dfo_id
SQC_IDbigint(20)并行查询中的 sqc_id
WORKER_IDbigint(20)线程 ID
EVENTvarchar(64)最长等待事件名称
P1TEXTvarchar(64)等待事件参数 1
P1bigint(20) unsigned等待事件参数 1 的值
P2TEXTvarchar(64)等待事件参数 2
P2bigint(20) unsigned等待事件参数 2 的值
P3TEXTvarchar(64)等待事件参数 3
P3bigint(20) unsigned等待事件参数 3 的值
LEVELbigint(20)等待事件的 Level 级别
WAIT_CLASS_IDbigint(20)等待事件所属的 Class ID
WAIT_CLASS#bigint(20)等待事件所属的 Class 的下标
WAIT_CLASSvarchar(64)等待事件所属的 Class 名称
STATEvarchar(19)等待事件的状态
WAIT_TIME_MICRObigint(20)该等待事件所等待的时间(微秒)
TOTAL_WAIT_TIME_MICRObigint(20)执行过程所有等待的总时间(微秒)
TOTAL_WAITSbigint(20)执行过程总等待的次数
RPC_COUNTbigint(20)发送 RPC 个数
PLAN_TYPEbigint(20)执行计划类型:
  • 1:本地执行计划(Local)
  • 2:远程执行计划(Remote)
  • 3:分布式执行计划(Distribute)
IS_INNER_SQLtinyint(4)是否为内部 SQL 请求
IS_EXECUTOR_RPCtinyint(4)当前请求是否为 RPC 请求
IS_HIT_PLANtinyint(4)是否命中计划缓存
REQUEST_TIMEbigint(20)开始执行时间点
ELAPSED_TIMEbigint(20)接收到请求到执行结束消耗总时间
NET_TIMEbigint(20)发送 RPC 到接收到请求时间
NET_WAIT_TIMEbigint(20)接收到请求到进入队列时间
QUEUE_TIMEbigint(20)请求在队列等待事件
DECODE_TIMEbigint(20)出队列后 Decode 时间
GET_PLAN_TIMEbigint(20)开始执行到获得计划时间
EXECUTE_TIMEbigint(20)Plan 执行消耗时间
APPLICATION_WAIT_TIMEbigint(20) unsigned所有 Application 类事件的总时间
CONCURRENCY_WAIT_TIMEbigint(20) unsigned所有 Concurrency 类事件的总时间
USER_IO_WAIT_TIMEbigint(20) unsigned所有 user_io 类事件的总时间
SCHEDULE_TIMEbigint(20) unsigned所有 Schedule 类事件的时间
ROW_CACHE_HITbigint(20)行缓存命中次数
BLOOM_FILTER_CACHE_HITbigint(20)Bloom Filter 缓存命中次数
BLOCK_CACHE_HITbigint(20)块缓存命中次数
BLOCK_INDEX_CACHE_HITbigint(20)块索引缓存命中次数
DISK_READSbigint(20)物理读次数
RETRY_CNTbigint(20)重试次数
TABLE_SCANtinyint(4)判断该请求是否含全表扫描
CONSISTENCY_LEVELbigint(20)一致性级别
MEMSTORE_READ_ROW_COUNTbigint(20)MEMSTORE 中读的行数
SSSTORE_READ_ROW_COUNTbigint(20)SSSTORE 中读的行数
REQUEST_MEMORY_USEDbigint(20)该请求消耗的内存
EXPECTED_WORKER_COUNTbigint(20)请求期望的工作线程数
USED_WORKER_COUNTbigint(20)请求实际使用的工作线程数
SCHED_INFOvarchar(16384)请求的调度信息
FUSE_ROW_CACHE_HITbigint(20)暂不支持该字段,字段默认为 NULL
PS_STMT_IDbigint(20)请求对应的 Prepare ID:
  • -1:表示 SQL 语句没有使用 PS 协议
  • 非 -1:表示 SQL 语句使用了 PS 协议,表示 PS 协议对该语句返回的唯一标志
TRANSACTION_HASHbigint(20) unsigned请求对应的事务的 Hash 值
REQUEST_TYPEbigint(20)请求对应的类型:
  • 0:表示非法
  • 1:表示是一个内部请求
  • 2:表示是一个本地请求,例如,Local 计划
  • 3:表示远程请求
  • 4:表示分布式请求
  • 5:表示 SQL 的 Prepare 请求
  • 6:表示 SQL 得到 Execute Stmt 请求
IS_BATCHED_MULTI_STMTtinyint(4)是否进行 Batch Multi Stmt 的优化
OB_TRACE_INFOVARCHAR2(4096)用户设置的 Trace 信息
PLAN_HASHbigint(20) unsigned执行计划的 Hash 值
LOCK_FOR_READ_TIMEbigint(20)读取数据时等待锁的耗时,单位:微秒
WAIT_TRX_MIGRATE_TIMEbigint(20)写入数据时,等待事务因为内部合并机制而需要冻结,冻结过程中未完成的事务需要搬迁出来的耗时,单位:微秒
PARAMS_VALUElongtext参数值
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论