MySQL 8.0 性能关键在于 my.ini 中 innodb_buffer_pool_size、innodb_log_file_size、default_authentication_plugin、max_connections 和 thread_cache_size 等参数需按硬件与用途合理配置,盲目套用模板易引发内存溢出、连接拒绝或写入延迟。
MySQL 8.0 的性能不取决于“装得快”,而取决于my.ini 里几个关键参数是否贴合你的硬件和用途。盲目套用网上模板,反而容易导致内存溢出、连接拒绝或写入延迟飙升。这是 MySQL 最关键的内存参数,它决定多少数据能常驻内存。设太小,频繁读盘;设太大,OS 内存不足,触发交换(swap),性能断崖式下跌。
innodb_buffer_pool_size=2G,留足 4GB 给系统和其他进程innodb_buffer_pool_size=24G(约 75%)innodb_buffer_pool_size=100% 或 8G(而实际物理内存只有 6GB)——Windows 会直接拒绝启动服务,日志里报 Cannot allocate memory for the buffer pool
这个值影响事务日志(ib_logfile0/1)大小,直接影响 crash recovery 耗时和写入吞吐。不是越大越好,尤其在 SSD/NVMe 上需谨慎。
net stop mysql → 手动删除 ib_logfile0 和 ib_logfile1 → 启动服务,MySQL 会重建InnoDB: Error: log file ib_logfile0 is of different size,说明没清干净旧日志MySQL 8.0 默认用 caching_sha2_password,比旧版 mysql_native_password 更安全,但 Navicat ≤ v12、某些 PHP PDO 驱动、甚至旧版 MySQL Workbench 会握手失败,报错 Client does not support authentication protocol requested by server。
[mysqld] 段加 default_authentication_plugin=mysql_native_password
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'xxx';
FLUSH PRIVILEGES;,且该设置不影响已创建用户的插件类型,只影响新用户光调高 max_connections 没用。如果 thread_cache_size 太小,每次新连接都要创建销毁线程,CPU 空转,连接排队超时。
max_connections=150 是合理起点;若应用报 Too many connections,再逐步加(每次 +50)thread_cache_size 建议设为 max_connections 的 1/8~1/4(如 150 → 设 16)SHOW STATUS LIKE 'Threads_created';,如果该值每秒持续增长 > 2,说明 cache 不够SHOW VARIABLES 和 SHOW ENGINE INNODB STATUSG 核对生效情况,别只信配置文件里写了什么。