首批通过分布式安全可靠测评,为关键业务系统打造
如何定位占用 cache 较大的 SQL
更新时间:2026-05-08 08:11
当出现 cache 占用大一直不释放的场景,我们可以分别通过 gv$sql_audit 视图定位可能的 SQL 语句。
适用版本
OceanBase 数据库 V2.x、V3.x 版本。
定位方法
核查 cache 使用情况,可参考此语句。
select cache_size/1024/1024/1024 gb,* from __all_virtual_kvcache_info where tenant_id=xxx order by cache_size desc limit 20;基于访问 SSTable 的访问数据量排序,可参考此语句。
select sql_id,count(sql_id) cnt,left(query_sql,20),sum(SSSTORE_READ_ROW_COUNT) sst_count from gv$sql_audit group by sql_id order by sst_count desc limit 20;基于 block_cache 命中情况排序,可参考此语句。
select sql_id,count(sql_id) cnt,left(query_sql,20),sum(BLOCK_CACHE_HIT) hit_count from gv$sql_audit group by sql_id order by hit_count desc limit 20;基于磁盘读取情况排序,当 SQL 未命中时,将从磁盘读取数据加载到 cache 中,可参考此语句。
select sql_id,count(sql_id) cnt,left(query_sql,20),sum(DISK_READS) disk_count from gv$sql_audit group by sql_id order by disk_count desc limit 20;