MySQL 8 和 WordPress

因為有個 WordPress 是放在 Mac mini 上,MySQL 是用 brew 安裝的,前一段時間在做過 brew upgrade 後沒注意到 MySQL 被升級到 8 了,所以整個 WordPress 效率變很差。

為了找出問題,要先知道哪些 query 最花時間,在 /usr/local/etc/my.cnf 加入下列幾行來產生需要的 log:

slow_query_log = 1
slow_query_log_file=/tmp/log-slow-queries.log
long_query_time = 2

觀察 log 內容,發現有個重要的 SELECT query 非常花時間:

特別是當 plugin 裝很多,又改過相當多設定後,wp_options 這個 table 就會變得很大,再加上 autoload 欄位又沒有建 index key,所以每次 query 都會花很長的時間。

將 autoload 加入 index 後,就將 query 時間縮短到 0.02s 了。

另外還有一個狀況是只有在新文章時才會用到的某個 plugin,query 內容是 :

SELECT ID FROM wp_posts WHERE guid = 'xxx';

想將 guid 加入 index key 卻因為欄位內容長度超過限制而失敗,後來找了文件才發現改用 FULLTEXT KEY 或是只限制只使用前 80 個字做 key 就可以了。

您可能也會喜歡…

2 個回應

  1. Jason表示:

    WordPress目前还不支持MySQL 8.0吗?

    • craig表示:

      應該不能說不支持,是沒有做好優化吧,使用上是沒問題的。
      另外,因為是從舊版升級上來,所以我也不知道新安裝會不會比較好。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料