
文章目录每日一句正能量1. 背景与问题2. 环境与数据3. 复现过程4. 方案实施5. 结果对比6. 风险与复盘每日一句正能量“人间最好的相遇不是在路上而是在心里。”物理的、短暂的相逢“在路上”是缘分而精神的、深刻的共鸣与留存“在心里”才是真正的相遇。最美的关系是一种内在的拥有。1. 背景与问题某读密集PostgreSQL系统数据库服务器128GB内存白天QPS持续在15000左右。虽然CPU利用率仅35%但磁盘随机读持续偏高SQL响应时间波动明显。排查发现Shared Buffers设置过小OS Page Cache利用率不足导致热点数据频繁重新加载。2. 环境与数据PostgreSQL 16Linux x86_64内存128GBNVMe SSDShared Buffers8GB优化前→32GB优化后work_mem4MB→16MBeffective_cache_size64GB→96GB核心SQLSELECTorder_id,user_id,amountFROMordersWHEREuser_id$1ORDERBYcreate_timeDESCLIMIT20;优化前执行计划Index Scan using idx_orders_user Buffers: shared hit820 read73 Execution Time: 18.6 ms监控指标指标优化前优化后Shared Buffer命中率92.1%98.7%磁盘随机读IOPS52001650平均SQL响应(ms)18.611.0Checkpoint写入峰值(MB/s)4302703. 复现过程pgbench导入100GB数据。热点数据占总体15%。持续执行高并发查询。使用pg_stat_statements、EXPLAIN(ANALYZE,BUFFERS)、iostat、vmstat采集数据。4. 方案实施参数调整shared_buffers32GB effective_cache_size96GB work_mem16MB maintenance_work_mem2GB random_page_cost1.1 effective_io_concurrency256执行计划优化后Index Scan using idx_orders_user Buffers: shared hit895 read6 Execution Time: 11.0 ms重点监控Shared Buffer Hit RatioOS Page Cache命中率Dirty Page比例Checkpoint耗时SQL TopN5. 结果对比优化后热点数据基本保留在Shared Buffers中而冷数据更多依赖OS Page Cache二者形成分层缓存。Shared Buffers负责事务一致性和数据库页管理操作系统缓存负责减少物理IO两者并非互斥而是协同工作。命中率提升后磁盘随机读下降约68%P99响应时间下降约38%CPU利用率基本保持稳定。6. 风险与复盘风险Shared Buffers配置过大可能压缩OS缓存空间。work_mem过大会导致并发内存放大。Checkpoint参数配置不合理会引起写放大。复盘建议Shared Buffers通常设置为总内存20%~30%。effective_cache_size应反映数据库可利用缓存总量。每次调参后必须结合EXPLAIN(ANALYZE,BUFFERS)、pg_stat_statements与iostat交叉验证。建议持续观察一周业务高峰数据再决定是否继续扩大缓存。本文以真实调优流程为主线围绕执行计划、监控指标、参数前后对比进行分析可直接迁移到读密集业务场景。转载自https://blog.csdn.net/u014727709/article/details/164031415欢迎 点赞✍评论⭐收藏欢迎指正