(g)v$sql_audit是基于虚拟表__all_virtual_sql_audit的视图, 该虚拟表对应的数据存放在一个可配置的内存空间中,能够记录并显示每一次SQL请求的来源、执行状态及统计信息,由于存放这些记录的内存是有限的,因此到达一定内存使用量,会触发淘汰。

    sql_audit相关设置

    • 设置sql_audit使用开关
    1. alter system set enable_sql_audit = true/false;
    • 设置sql_audit内存上限
    1. alter system set sql_audit_memory_limit = '3G';

    3G是默认内存上限,可设置范围为[64M,+∞]

    sql_audit淘汰机制

    • 机制启动间隔:后台任务每隔1s会检测是否需要淘汰。

    • 触发淘汰的标准:1)当内存或记录数达到淘汰上限时触发淘汰;2)sql_audit内存最大可使用上限:avail_mem_limit = min(OBServer可使用内存*10%, sql_audit_memory_limit);3)淘汰内存上限:当avail_mem_limit在[64M, 100M]时, 内存使用达到avail_mem_limit - 20M时触发淘汰;当avail_mem_limit在[100M, 5G]时, 内存使用达到availmem_limit*0.8时触发淘汰;当avail_mem_limit在[5G, +∞]时, 内存使用达到availmem_limit - 1G时触发淘汰;4)淘汰记录数上限:当sql_audidt记录数超过900w条记录时,触发淘汰;

    • 停止淘汰的标准:1)如果是达到内存上限触发淘汰则:当avail_mem_limit在[64M, 100M]时, 内存使用淘汰到avail_mem_limit-40M时停止淘汰;当avail_mem_limit在[100M, 5G]时, 内存使用淘汰到availmem_limit*0.6时停止淘汰;当avail_mem_limit在[5G, +∞]时, 内存使用淘汰到availmem_limit-2G时停止淘汰; 2)如果是达到记录数上限触发的淘汰则淘汰到800w行记录时停止淘汰;

    sql_audit字段解释

    字段名称

    类型

    描述

    SVR_IP

    varchar(32)

    ip地址

    SVR_PORT

    bigint(20)

    端口号

    REQUEST_ID

    bigint(20)

    请求的id号

    TRACE_ID

    varchar(128)

    这条语句的trace_id

    CLIENT_IP

    varchar(32)

    发送请求的client ip

    CLIENT_PORT

    bigint(20)

    发送请求的client port

    TENANT_ID

    bigint(20)

    发送请求的租户id

    TENANT_NAME

    varchar(64)

    发送请求的租户 名称

    USER_ID

    bigint(20)

    发送请求的用户id

    USER_NAME

    varchar(64)

    发送请求的用户名称

    SQL_ID

    varchar(32)

    这条SQL的id

    QUERY_SQL

    varchar(32768)

    实际的SQL语句

    PLAN_ID

    bigint(20)

    执行计划id

    AFFECTED_ROWS

    bigint(20)

    影响行数

    RETURN_ROWS

    bigint(20)

    返回行数

    PARTITION_CNT

    bigint(20)

    该请求涉及的分区数

    RET_CODE

    bigint(20)

    执行结果返回码

    EVENT

    varchar(64)

    最长等待事件名称

    P1TEXT

    varchar(64)

    等待事件参数1

    P1

    bigint(20) unsigned

    等待事件参数1的值

    P2TEXT

    varchar(64)

    等待事件参数2

    P2

    bigint(20) unsigned

    等待事件参数2的值

    P3TEXT

    varchar(64)

    等待事件参数3

    P3

    bigint(20) unsigned

    等待事件参数3的值

    LEVEL

    bigint(20)

    等待事件的level级别

    WAIT_CLASS_ID

    bigint(20)

    等待事件所属的class id

    WAIT_CLASS#

    bigint(20)

    等待事件所属的class 的下标

    WAIT_CLASS

    varchar(64)

    等待事件所属的class 名称

    STATE

    varchar(19)

    等待事件的状态

    WAIT_TIME_MICRO

    bigint(20)

    该等待事件所等待的时间(微秒)

    TOTAL_WAIT_TIME_MICRO

    bigint(20)

    执行过程所有等待的总时间(微秒)

    TOTAL_WAITS

    bigint(20)

    执行过程总等待的次数

    RPC_COUNT

    bigint(20)

    发送rpc个数

    PLAN_TYPE

    bigint(20)

    执行计划类型,local remote distribute

    IS_INNER_SQL

    tinyint(4)

    是否内部sql请求

    IS_EXECUTOR_RPC

    tinyint(4)

    当前请求是否rpc请求

    IS_HIT_PLAN

    tinyint(4)

    是否命中plan_cache

    REQUEST_TIME

    bigint(20)

    开始执行时间点

    ELAPSED_TIME

    bigint(20)

    接收到请求到执行结束消耗 总时间

    NET_TIME

    bigint(20)

    发送rpc到接收到请求时间

    NET_WAIT_TIME

    bigint(20)

    接收到请求到进入队列时间

    QUEUE_TIME

    bigint(20)

    请求在队列等待事件

    DECODE_TIME

    bigint(20)

    出队列后decode时间

    GET_PLAN_TIME

    bigint(20)

    开始process到获得plan时间

    EXECUTE_TIME

    bigint(20)

    plan执行消耗时间

    APPLICATION_WAIT_TIME

    bigint(20) unsigned

    所有application类事件的总时间

    CONCURRENCY_WAIT_TIME

    bigint(20) unsigned

    所有concurrency类事件的总时间

    USER_IO_WAIT_TIME

    bigint(20) unsigned

    所有user_io类事件的总时间

    SCHEDULE_TIME

    bigint(20) unsigned

    所有schedule类事件的时间

    ROW_CACHE_HIT

    bigint(20)

    行缓存命中次数

    BLOOM_FILTER_CACHE_HIT

    bigint(20)

    bloom filter缓存命中次数

    BLOCK_CACHE_HIT

    bigint(20)

    块缓存命中次数

    BLOCK_INDEX_CACHE_HIT

    bigint(20)

    块索引缓存命中次数

    DISK_READS

    bigint(20)

    物理读次数

    EXECUTION_ID

    bigint(20)

    执行ID

    SESSION_ID

    bigint(20)

    session id

    RETRY_CNT

    bigint(20)

    重试次数

    TABLE_SCAN

    tinyint(4)

    判断该请求是否含全表扫描

    CONSISTENCY_LEVEL

    bigint(20)

    一致性级别

    MEMSTORE_READ_ROW_COUNT

    bigint(20)

    MEMSTORE中的读行数

    SSSTORE_READ_ROW_COUNT’

    bigint(20)

    SSSTORE中国年读的行数

    REQUEST_MEMORY_USED

    bigint(20)

    该请求消耗的内存