ob 数据库优化

##issue 1 审计表 该sql 跑的非常慢,大概10分钟没出结果

SQL: 该sql 跑的非常慢,大概10分钟没出结果

select USEC_TO_TIME(request_time),QUERY_SQL from sql_audit PARTITION(p20240809)
where QUERY_SQL like ‘%amm%’ and request_time > time_to_usec(now() - interval 14 hour) order by request_time asc

select count(*) from sql_audit PARTITION(p20240809)
数据量大概几个亿。

想资源下,有没有优化这种SQL 的可以操作的方法论


回答如下:

看看这个表对应的内部表,以及上面的索引,尽可能加上对应的条件。如 tenant_id=xxxx and svr_ip in ('xx.xx.xx.xx') and rquest_type in (1,2,3)
此外就是加 hint /*+ read_consistency(weak) parallel(16) */


从你的SQL语句来看,感觉是sql_audit这张表每天做一个分区,你要查询20240809这天的相关数据。

但你的where条件中基本没有有效的过滤条件,所以最终肯定是全扫描p20240809这个分区,而这个分区的数据量有几个亿,所以速度肯定快不了。。

尝试办法:
在你的SQL语句加上/*+ parallel(16) */ Hint吧, 应该比你原来的SQL快。

posted @ 2024-08-13 16:25  feiyun8616  阅读(22)  评论(0编辑  收藏  举报