innodb_buffer_pool_size应略大于常驻热数据与索引总和而非数据库全量大小需结合Innodb_buffer_pool_reads/Read_requests比值1%则不足、内存余量及并发负载综合设定避免OOM或缓存过小。innodb_buffer_pool_size 设多少才不翻车这个值设错MySQL 要么吃光内存 OOM要么缓存太小查得比磁盘还慢。它不是越大越好也不是按物理内存 70% 硬套就安全。关键看实际数据量和访问模式innodb_buffer_pool_size 应该略大于「常驻热数据 索引」的总大小而不是整个数据库文件大小。用 SELECT (SELECT COUNT(*) FROM information_schema.INNODB_BUFFER_PAGE) * 16384 / 1024 / 1024 AS buffer_used_mb; 粗略看当前用了多少 MB注意这不准但可作趋势参考查真实数据索引大小SELECT SUM(data_length index_length) / 1024 / 1024 AS total_mb FROM information_schema.tables WHERE engineInnoDB;线上跑稳后观察 Innodb_buffer_pool_reads从磁盘读页和 Innodb_buffer_pool_read_requests总读请求比值持续 1% 就说明缓存不够别在 32GB 内存机器上直接设 24G —— Linux、MySQL 其他组件如 sort buffer、tmp table、甚至监控 agent 都要内存innodb_buffer_pool_instances 到底要不要调默认是 8但很多人不知道它只在 innodb_buffer_pool_size 1G 时才生效且必须整除 pool 大小。设错反而降低并发性能。它的作用是把 buffer pool 拆成多个独立实例减少线程争抢同一 mutex。但拆太多会浪费内存对齐开销太少又起不到分片效果。若 innodb_buffer_pool_size 是 4G建议设为 4 或 84G ÷ 4 1G/instance符合最小粒度若只有 512MBinnodb_buffer_pool_instances 设成 1 更稳 —— 强制设 4 会导致每个 instance 不足 128MBInnoDB 会静默忽略并回退到 1MySQL 5.7 支持在线调整但改完要 SET GLOBAL innodb_buffer_pool_size N; 触发重分配期间会有短暂性能抖动为什么开了 innodb_buffer_pool_dump_at_shutdown 还没 dump 成功这个参数只是“允许”关机时 dump真正执行还要看 innodb_buffer_pool_dump_now 或 innodb_buffer_pool_dump_pct 是否配合到位否则 shutdown 时压根不触发。 稿定AI 拥有线稿上色优化、图片重绘、人物姿势检测、涂鸦完善等功能