“数据库 Cache 怎么配置”这个问题比较宽泛,不同数据库、不同使用场景差别很大。下面我按常见数据库 + 核心配置思路给你一个实用指南,你可以再告诉我你用的是哪种数据库,我可以给你更精确的参数。
数据库 Cache 通常包括:
最常见的是 数据库自身的内存缓存。
✅ 缓存大小不是越大越好
✅ 要为操作系统、连接、排序、临时表预留内存
✅ 监控命中率,而不是只看参数
通用公式:
数据库缓存 ≈ 总内存 × 50%~70%
innodb_buffer_pool_size = 4G
建议:
查看命中率:
SHOW STATUS LIKE 'Innodb_buffer_pool_read%';
query_cache_type = 0
query_cache_size = 0
MySQL 8.0 已移除查询缓存
sort_buffer_size = 4M
join_buffer_size = 4M
read_buffer_size = 2M
⚠️ 不要全局设置过大,按连接数算内存。
shared_buffers = 2GB
建议:
PostgreSQL 重度依赖 OS Page Cache,所以:
effective_cache_size = 6GB
work_mem = 16MB
用于排序、哈希,按并发算。
ALTER SYSTEM SET sga_target = 8G;
ALTER SYSTEM SET sga_max_size = 8G;
ALTER SYSTEM SET db_cache_size = 4G;
maxmemory 4gb
maxmemory-policy allkeys-lru
策略选择:
| 场景 | 策略 |
|---|---|
| 热点数据 | allkeys-lru |
| 会话缓存 | volatile-ttl |
| 严格不丢 | noeviction |
| 场景 | 建议 |
|---|---|
| 热点数据 | ✅ Redis |
| 复杂查询 | ✅ 数据库缓存 |
| 高并发读 | ✅ 应用层缓存 |
| 写多读少 | ❌ 减少缓存 |
SHOW ENGINE INNODB STATUS;
你可以直接告诉我:
我可以帮你算一套可直接用的配置参数。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。