---
title: 如何定位占用 cache 较大的 SQL-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于 如何定位占用 cache 较大的 SQL相关的常见问题和使用技巧，帮助您快速解决 如何定位占用 cache 较大的 SQL的难题。
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

划线反馈

# 如何定位占用 cache 较大的 SQL

更新时间：2026-05-08 08:11

适用版本： V2.1.x、V2.2.x、V3.1.x、V3.2.x 内容类型：How-to  

当出现 cache 占用大一直不释放的场景，我们可以分别通过 `gv$sql_audit` 视图定位可能的 SQL 语句。

## 适用版本

OceanBase 数据库 V2.x、V3.x 版本。

## 定位方法

- 核查 cache 使用情况，可参考此语句。

  ```shell
  select  cache_size/1024/1024/1024 gb,* from __all_virtual_kvcache_info where tenant_id=xxx order by cache_size desc limit 20;

  ```
 - 基于访问 SSTable 的访问数据量排序，可参考此语句。

  ```shell
  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 命中情况排序，可参考此语句。

  ```shell
  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 中，可参考此语句。

  ```shell
  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;

  ```

上一篇

[如何理解 Cache 被 pin 住](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000209953)

下一篇

[如何手工 Flush KV Cache](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000209952) ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
