[英]Laravel migrations/db:seed super slow
我最近从旧的 Windows 计算机升级到了 gen。 4 I7 Ubuntu 15.04
像梦一样运行,嗯......除了任何涉及数据库的 Laravel 工匠命令都需要一百万年才能完成,而我的旧计算机在几秒钟内执行任何这些命令。
主要区别在于,我将 MySQL 作为本地服务运行,而不是 XAMPP。
同样在我的旧计算机中,我可以看到迁移是如何在屏幕上缓慢显示的,因为它们现在似乎正在处理,大约需要 2 到 5 分钟,完成后会立即显示整个迁移列表。 这可能表明某处存在某种瓶颈。
在互联网的某个地方,有人说因为 DSN 解析而使用“127.0.0.1”而不是“localhost” 。 没解决。
为了确保这不是我跑的问题
$time = microtime(true);
//also with host=127.0.0.1
new PDO("mysql:host=localhost;dbname=some_db", "username", "password");
//some simple queries here...
//yielded similar marginal times
echo microtime(true) - $time;
~半
编辑
我收集了从框架中的每个查询的运行时间,我有迁徙的地段,分析我发现没有什么出奇的慢(就像一分钟运行查询)的数据。
这是数据的链接。 我的雇主省略了实际查询。
尽管有许多查询运行了 1 秒或更长时间,但最慢的number 221
需要高达 3.5 秒。
我有大约一百次迁移(我知道),但问题是,如果每次迁移需要一秒钟,我会等待大约一分半钟才能迁移,但通常需要 4 到 5 分钟。
正如 Oliverpool 所建议的,我通过终端在 mysql 上重放查询进行了一些分析,但我不必等待超过一秒,平均查询大约需要一秒左右。
这是最慢查询的分析图片(迁移 3.5 秒,图片中不到一秒)
也许这指向连接? 顺便说一下,运行迁移后慢查询日志是空的。
另外,我现在使用 laravel 5 并且行为是相同的。 我不知道如何解决连接问题,所以我想可以使用谷歌搜索,欢迎提出任何建议。
提前致谢。
在这种情况下,我认为需要增加缓冲池大小。 设置以下内容:
[mysqld]
innodb_io_capacity = 2000
innodb_read_io_threads = 64
innodb_thread_concurrency = 0
innodb_write_io_threads = 64
如果您使用的是 MySQL 8
就我而言,问题是 MySQL 8 的insert
速度较慢,这是在将 MySQL 5.7 更新到 8 后发生的
5.7 和 8.0 之间的区别在于 MySQL 8.0 中默认启用二进制日志记录(用于复制和 PITR)。 在 8.0 中不使用二进制日志运行
这个问题的快速解决方法是使用--disable-log-bin
启动你的 MySQL 服务器
或者您可以在 my.cnf 中编写以下代码
[mysqld]
skip-log-bin
欲了解更多信息,请访问
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.