因為有個 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 就可以了。

MariaDB Galera Cluster 部署(如何快速部署 MariaDB 集群)

MariaDB 作为 Mysql 的一个分支,在开源项目中已经广泛使用,例如大热的 openstack,所以,为了保证服务的高可用性,同时提高系统的负载能力,集群部署是必...

阅读全文

修改使用Alpine Linux的Docker容器的时区

适用对象 使用 Alpine Linux 发行版的 Docker 镜像容器。仅仅适用于没有安装uclibc的系统。 修改步骤 进入容器命令行 # docker exec -it contain...

阅读全文

CentOS下shadowsocks-libev一键安装脚本

本脚本适用环境: 系统支持:CentOS 内存要求:≥128M 日期:2018 年 06 月 01 日 关于本脚本: 一键安装 libev 版的 Shadowsocks 最新版本。该版本的特点...

阅读全文

欢迎留言