SQL AUDIT问题

GV$OB_SQL_AUDIT这个表相关的查询能不能优化一下?每次分析问题查询这个视图需要5分钟才查出来 :crazy_face:

2 个赞

5分钟太夸张了吧,加些过滤条件,不要全表查

2 个赞

5分钟估计是集群本身有点问题或者查询姿势不对,正常都是秒出的

建议:

  1. 用诊断工具obdiag 巡检一下,发出来巡检报告,看看集群本身有没有啥问题。
  2. 把你你查询sql_audit的语句出来看看;
3 个赞

select * from gv$ob_sql_audit where trace_id=‘xxxx’ order by request_time \G DB耗时:239.73S 这张表2300W+行

2 个赞

这样一下 加并发的hint 试一下
select /+ PARALLEL(15)/ * from gv$ob_sql_audit where trace_id=‘xxxx’ order by request_time desc limit 20;

3 个赞

加了16个并行,220s出结果,就这个表慢,其他的都正常 :rofl:

3 个赞

增加一些条件 要不然你的内存设置很大 这个视图的数据淘汰的慢 数据量会非常大 查询就慢了
obclient> SELECT/+ PARALLEL(16)/ sql_id, elapsed_time , trace_id
FROM oceanbase.GV$OB_SQL_AUDIT
WHERE tenant_id = 1001
and IS_EXECUTOR_RPC = 0
and request_time > (time_to_usec(now()) - 10000000)
AND request_time < time_to_usec(now())
ORDER BY elapsed_time DESC LIMIT 10;
可以看看官方文档 你可以看看sql性能问题语句的这么查询
https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000002017268

3 个赞

最后的结果集是多少数据?

2 个赞

估计会是什么原因啊,感觉有些时候数据库就如同一个黑盒子

2 个赞

就几条数据结果

2 个赞

说是数据太多了

1 个赞

你ob的版本 是哪个版本

4253

后面是咋解决的?

按照官方文档提供的语句 查询也很慢么?
按照租户查询 看看执行需要多长时间
SELECT/+ PARALLEL(16) / sql_id, elapsed_time , trace_id
FROM oceanbase.GV$OB_SQL_AUDIT
WHERE tenant_id = 1001
and IS_EXECUTOR_RPC = 0
and request_time > (time_to_usec(now()) - 10000000)
AND request_time < time_to_usec(now())
ORDER BY elapsed_time DESC LIMIT 10;

提供一下执行计划 保存在文本里 看看执行计划
explain extended SELECT/+ PARALLEL(16) / sql_id, elapsed_time , trace_id
FROM oceanbase.GV$OB_SQL_AUDIT
WHERE tenant_id = 1001
and IS_EXECUTOR_RPC = 0
and request_time > (time_to_usec(now()) - 10000000)
AND request_time < time_to_usec(now())
ORDER BY elapsed_time DESC LIMIT 10;