innodb_buffer_pool_size调小导致导入卡住因缓冲池过小引发频繁磁盘读和LRU淘汰IO成为瓶颈应设为内存50%–75%并配合调整UNIQUE_CHECKS、FOREIGN_KEY_CHECKS、innodb_log_buffer_size等参数。为什么 innodb_buffer_pool_size 调小了导入就卡住MySQL 全量导入比如 mysql backup.sql本质是大量 INSERT 事务日志刷盘InnoDB 需频繁读写页、维护缓冲池链表、做 LRU 淘汰。如果 innodb_buffer_pool_size 太小比如默认 128MB缓冲池很快被填满导致大量物理磁盘读从 ibdata 或表空间文件加载页和频繁淘汰重载IO 成瓶颈。实操建议导入前把 innodb_buffer_pool_size 设为物理内存的 50%–75%但别超 80%留内存给 OS 缓存和 MySQL 其他结构如 sort_buffer_size确认可用内存用 free -h 看 available 值不是 total动态调5.7SET GLOBAL innodb_buffer_pool_size 4294967296;4GB但注意该值必须是 1MB 的整数倍且重启后失效永久生效要改 my.cnf别在导入中途调——可能触发 buffer pool 重建反而中断导入导入时还卡检查这几个配套参数是否拖后腿innodb_buffer_pool_size 单独调大效果有限它和日志、刷脏、唯一检查等环节强耦合。常见配套参数不匹配会让缓冲池“有劲使不出”。实操建议关掉唯一性检查SET UNIQUE_CHECKS0;导入完再开否则每行 INSERT 都查二级索引全走磁盘关外键检查SET FOREIGN_KEY_CHECKS0;避免逐条验证外键约束增大日志缓冲SET GLOBAL innodb_log_buffer_size 67108864;64MB减少日志刷盘频率临时调大 innodb_log_file_size需停库重做日志文件能显著减少 checkpoint 频率但操作重非紧急不推荐mysqldump 导出时没加 --skip-extended-insert导入时更慢默认 mysqldump 用批量 INSERTINSERT INTO t VALUES (...),(...),(...);看着省语句但 MySQL 解析长 SQL 更耗 CPU且事务粒度大undo log 和 buffer pool 压力翻倍。尤其当单条 INSERT 含几百上千行时buffer pool 很难有效缓存热页。 通义听悟 阿里云通义听悟是聚焦音视频内容的工作学习AI助手依托大模型帮助用户记录、整理和分析音视频内容体验用大模型做音视频笔记、整理会议记录。