key_buffer_size仅影响MyISAM索引缓存对InnoDB无效应通过information_schema查MyISAM索引实际占用并设为1.2–1.5倍避免过大导致锁竞争或内存浪费。key_buffer_size 是给 MyISAM 表用的InnoDB 完全不认它很多人调大 key_buffer_size 是想加速查询结果发现没效果——因为你的表大概率是 InnoDB 引擎。MySQL 5.5 之后默认引擎就是 InnoDB而 key_buffer_size 只影响 MyISAM 的索引缓存对 InnoDB 的 innodb_buffer_pool_size 零作用。确认方法很简单SHOW TABLE STATUS LIKE your_table_name; 看 Engine 字段或者批量查SELECT table_name, engine FROM information_schema.tables WHERE table_schema your_db;如果全是 InnoDBkey_buffer_size 设成 8M 或 16M 就够了再大纯属浪费内存如果还有 MyISAM 表比如老系统里的 mysql 系统库部分表才需要按实际索引大小谨慎调高设得过大可能挤占其他关键内存比如 innodb_buffer_pool_size 或连接缓冲反而拖慢整体性能怎么查 MyISAM 索引真实占用避免拍脑袋设值不能看磁盘上 .MYI 文件大小因为里面含空闲空间和碎片得查 MySQL 内部统计的“已用索引长度”。执行这条 SQLSELECT SUM(index_length) FROM information_schema.tables WHERE engine MyISAM AND table_schema NOT IN (information_schema, performance_schema, sys);结果单位是字节除以 1024÷1024 得到 MBkey_buffer_size 建议设为该值的 1.2–1.5 倍留点增长余量但别超过 2 倍如果总和不到 32MB保持默认 8M 或设成 16M 即可没必要动注意这个值会随数据变更缓慢增长不用天天重算三个月左右看一次足够my.cnf 里改完不生效检查这三处硬伤改了 key_buffer_size 重启 mysqld 还是没变常见卡点就这几个 知网AI智能写作 知网AI智能写作写文档、写报告如此简单