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 非常花時間:

图片[1]-MySQL 8 和 WordPress-第五维

特別是當 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 就可以了。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享