直接改php.ini无法提升十万级SQL导入速度,真正有效的是绕过phpMyAdmin用命令行直连MySQL执行导入。
直接改 php.ini 并不行——它只能缓解超时和上传限制,但对十万级 sql 导入速度几乎没帮助。真正起效的是绕过 phpmyadmin 的 web 层,用底层机制或替代路径。
为什么 phpMyAdmin 导入大 SQL 文件必然慢?
phpMyAdmin 本质是 PHP 脚本,它把整个 SQL 文件读进内存、逐行解析、再一条条发给 MySQL。十万行意味着:
- PHP 内存占用飙升(
memory_limit很容易被突破) - 每条语句都走一次 MySQL 协议握手 + 解析 + 执行,网络和 CPU 开销叠加
- 无法利用 MySQL 原生的批量加载能力(比如
LOAD DATA INFILE) - Web 服务器(Apache/Nginx)的请求超时、缓冲区限制会中途打断
必须禁用 phpMyAdmin 的默认导入路径
别在“导入”页面点选文件后傻等——那是最慢的路。正确做法是彻底跳过它:
- 确认你有服务器 SSH 权限(绝大多数 VPS/云主机都有)
- 把 SQL 文件上传到服务器任意目录(如
/tmp/import.sql),别放 Web 可访问路径 - 用命令行直连 MySQL:
mysql -u <code>用户名</code> -p<code>密码</code> <code>数据库名</code> < /tmp/import.sql
- 如果文件含
CREATE DATABASE或USE语句,先手动创建库再导入;否则会报错 - 密码带特殊字符?改用
-p交互式输入,避免 shell 解析错误
若必须用 phpMyAdmin,只调这 3 个参数
仅当无 SSH 权限时才考虑微调,且效果有限。改完必须重启 Web 服务:
-
upload_max_filesize = 256M(不设够,文件根本传不上去) -
post_max_size = 256M(POST 数据上限,需 ≥ upload_max_filesize) -
max_execution_time = 600(脚本最长运行时间,设太大会拖垮服务器) - 别碰
memory_limit盲目调高——phpMyAdmin 解析逻辑本身低效,加内存只是延缓崩溃,不提速 - 验证是否生效:访问
phpinfo()页面,搜索对应项,看值是否更新
真正十万级导入该怎么做?
phpMyAdmin 不是导入工具,它是管理界面。数据量一上五位数,就该换思路:
立即学习“PHP免费学习笔记(深入)”;
- 原始数据如果是 Excel 或 CSV,用 PHP 脚本(如
box/spout)解析后走LOAD DATA INFILE,3 秒搞定 10 万行 - SQL 文件里全是
INSERT INTO ... VALUES (...),(...),(...)?用脚本合并成单条多值语句,再用命令行导入 - 实在要图形界面,换 Navicat 或 DBeaver——它们底层调用原生 MySQL 客户端,支持分片、进度条、断点续传
- 注意权限:MySQL 默认禁止
LOAD DATA INFILE,需开secure_file_priv或用LOCAL INFILE+ 客户端授权
最后提醒一句:很多人卡在“以为调大 max_execution_time 就能跑完”,结果等 10 分钟还是失败——那不是配置问题,是路径错了。真正的瓶颈从来不在 PHP 超时,而在架构选择。



















