You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel每个Migration执行耗时过长问题求助

Laravel迁移执行异常缓慢问题

正常情况下单个Laravel Migration执行耗时约20~50ms(取决于系统资源与配置),但执行php artisan migrate或php artisan migrate:fresh命令时,每个迁移文件的执行耗时高达2000~10000ms。

运行环境信息

  • OS: Ubuntu 22.04.2 LTS x86_64
  • Kernel: 5.19.0-46-generic
  • Shell: zsh 5.8.1
  • CPU: Intel i7-4800MQ (8) @ 3.700GHz
  • Memory: 31997MiB
  • MySQL: 8.0.33
  • PHP: 7.4

已尝试的MySQL配置调整(无效果)

max_binlog_size   = 100M
innodb_io_capacity = 2000
innodb_read_io_threads = 64
innodb_thread_concurrency = 0
innodb_write_io_threads = 64
default_authentication_plugin=mysql_native_password 

迁移耗时监控截图

迁移耗时监控截图

排查建议

  • 检查数据库连接地址:将.env里的DB_HOST从localhost改为127.0.0.1,部分系统中localhost会优先使用Unix Socket,可能存在性能瓶颈,切换为TCP连接测试
  • 临时关闭MySQL日志:关闭general_log和slow_query_log,日志写入会占用额外IO资源,测试是否能降低耗时
  • 单独测试迁移SQL:把迁移文件中的SQL语句提取出来,直接在MySQL客户端执行,判断是Laravel层面还是数据库层面的问题
  • 监控系统磁盘IO:使用iostat -x 1命令查看磁盘读写负载,如果%util接近100%,说明磁盘IO是瓶颈,考虑更换更快的存储或优化磁盘配置
  • 检查数据库连接复用:查看Laravel的数据库连接池配置,确保迁移过程中连接被复用,避免频繁创建销毁连接
  • 禁用迁移事务(谨慎操作):部分复杂迁移在事务中执行会导致锁等待,可在迁移文件的up方法开头添加Schema::disableForeignKeyConstraints(),执行完成后再启用,注意这会关闭外键约束校验,需确保数据完整性

内容的提问来源于stack exchange,提问作者H.Rad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 20:39:57