繁体   English   中英

Laravel 迁移/数据库:种子超慢

[英]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

欲了解更多信息,请访问

https://dba.stackexchange.com/questions/216352/inserts-in-mysql-8-are-slower-than-inserts-in-mysql-5-7?newreg=fe2b7682e8314f07a785ddc9a8ffbdce

https://dba.stackexchange.com/questions/227742/extreme-performance-loss-due-to-moving-from-mysql-5-7-23-to-mysql-8-0-status-c

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM