3.x 4.x
v$sql_audit中username代表什么? 可不可以有参数设置不记录系统内部sql 或者username null的数据。里面觉大部分都是系统产生的SQL,导致刚执行没多久的sql 都被刷新了,没法看之前的数据。
sql_audit的数据是在内存中的,username表示的是"发送请求的用户名称",OceanBase 社区
不能把sql_audit的数据当成持久化的数据去查历史记录,如果想保存的时间久一点,可以调大系统租户内存以及保存数据的上限;OceanBase分布式数据库-海量数据 笔笔算数
大佬,我的问题是 username是null的表示什么?
刷的太快了 ,甚至连1分钟前的都查不到,能有多大内存可以扩?而且你看截图,真正的用户sql没多少。
user_name为null的一般都是系统内部产生的sql,你可以过滤查一下user_name为null的query_sql字段,很多是空的。这些产生的原因有多种,比较常见的是业务sql发生远程或者分布式执行的时候,可能你们的业务表不是分区表?查询语句涉及很多范围查询?
可以从sql_audit的plan_type字段看执行计划类型。
- plan_type=1 :本地执行计划。性能最好。
- plan_type=2 : 远程执行计划。
- plan_type=3 : 分布式执行计划。包含本地执行计划和远程执行计划。
租户内存多大。。。1分钟都能刷走
确实。。。查查原因把。。。跟我们这边的使用情况不一样
在sql_audit的记录中,plan_type有第四种值,那就是0,0对应的是没有初始化的,对应的sql是没有执行计划的。这类没有执行计划的sql包含DDL语句 和CMD语句 。
你的业务有很多ddl变更的语句?
前面有type 0的SQL排序后结果,set多,为啥业务sql也有很多
过滤一下plan_type = 0的结果,看看有没有业务SQL
GV$OB_SQL_AUDIT
视图的数据存放在一个可配置的内存空间中,每个租户在每个节点上都有一块独立的缓存,当内存使用或记录数达到淘汰上限时会触发自动淘汰,最久的数据优先淘汰。有经验的 DBA 在排查 SQL 问题时,往往第一件事就是关闭 SQL Audit 功能以保存现场,避免抖动现场的监控数据被淘汰.
文档里说的,这种情况下是不是应该关闭SQL Audit功能。
前面截图里的select insert update都是业务SQL ,也是Plan_type=0的
已plan_type=0为条件,查一下截图吧。看看哪种最多,plan_type=0的太多了,比本地执行计划+远程+分布式还多出1个数量级