簡體   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