You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何清理托管在AWS RDS上的PostgreSQL的缓冲区缓存?

AWS RDS PostgreSQL 清理缓存测试真实查询耗时操作指南

你遇到的首次查询超时、后续查询极快的现象,本质是首次查询需要从持久化存储拉取数据页到内存,后续查询直接读取数据库共享缓存、操作系统页缓存或RDS存储层缓存的热数据,并非查询本身性能达标。

前置注意事项

  • 所有缓存清理操作建议在测试环境执行,若需在生产环境操作请避开业务高峰,缓存清理后短时间内所有查询都会变慢,可能影响业务稳定性。
  • PostgreSQL 默认没有全局查询结果缓存,无需专门清理该类缓存。

缓存清理操作步骤

  1. 清理数据库共享缓存(shared_buffers)
    首先安装RDS支持的缓存清理扩展,执行命令:

    CREATE EXTENSION IF NOT EXISTS pg_dropcache;
    

    再执行缓存清理命令:

    SELECT pg_drop_buffers();
    
  2. 清理操作系统页缓存与RDS存储层缓存

    • 测试环境可直接重启RDS实例,重启后所有内存层缓存都会被清空,是最彻底的清理方式
    • 生产环境无法重启的话,可找一个容量大于当前实例shared_buffers大小的无关大表,执行全表扫描挤掉原有缓存:
    SELECT COUNT(*) FROM 容量足够的无关大表名;
    
  3. 排除客户端缓存干扰
    绝大多数数据库客户端工具(DBeaver、Navicat、DataGrip等)默认会开启本地查询结果缓存,测试前需关闭客户端的查询缓存配置,或者直接重启客户端进程后再执行查询。


真实耗时测试方法

  • 每次完成上述缓存清理操作后,首次执行目标查询得到的耗时就是冷查询的真实执行耗时
  • 若需要分析慢查询原因,清理缓存后执行以下命令查看完整执行计划:
    EXPLAIN ANALYZE 你的目标查询语句;
    
  • 多轮测试需每轮都重新执行缓存清理操作,避免热数据影响结果。

内容的提问来源于stack exchange,提问作者zhachun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 08:57:00