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