我的借一步网 https://jieyibu.net/ 由于帖子数量不断增多已经出现间歇性卡顿。
我想要优化一下,于是安装了几个插件,结果卡顿了。
浏览器调试看出来是卡在 load-styles.php 等 由于优化插件合并小文件导致的问题。
这时候就需要修改 wp-config.php 在里面强制关闭文件合并:
define( 'CONCATENATE_SCRIPTS', false );
接下来就是优化数据库。
主要是 index 优化。
例如:
mysql> EXPLAIN SELECT * FROM wp_posts WHERE post_name = 'example' AND post_type = 'post' AND post_status = 'publish';
+----+-------------+----------+------------+------+-------------------------------------------------------------------------+-----------+---------+-------+------+----------+-------------+
| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
+----+-------------+----------+------------+------+-------------------------------------------------------------------------+-----------+---------+-------+------+----------+-------------+
| 1 | SIMPLE | wp_posts | NULL | ref | post_name,type_status_date,idx_post_name_type,idx_post_name_type_status | post_name | 802 | const | 1 | 51.96 | Using where |
+----+-------------+----------+------------+------+-------------------------------------------------------------------------+-----------+---------+-------+------+----------+-------------+
1 row in set, 1 warning (0.00 sec)
根据上面的 EXPLAIN
查询结果分析:
查询分析
列名 | 说明 |
---|---|
id | 1(表示查询的唯一标识) |
select_type | SIMPLE(表示简单查询,没有子查询) |
table | wp_posts (查询的表) |
type | ref(使用了索引进行查找,效率较高) |
possible_keys | 可用的索引列表:post_name , type_status_date , idx_post_name_type , idx_post_name_type_status |
key | post_name (实际使用的索引) |
key_len | 802(表示索引使用的字节长度) |
ref | const(表示常量值,具体值由查询条件提供) |
rows | 1(预计扫描的行数) |
filtered | 51.96%(估计符合条件的行的百分比) |
Extra | Using where(表示还需要在索引结果上进行额外的条件过滤) |
关键点
- 使用的索引: 查询使用了
post_name
索引,但未使用idx_post_name_type_status
。这表明虽然该索引存在,但在这个特定查询中,使用post_name
索引可能更加高效。 - 行数估计: 预计扫描 1 行,表明查询效率较高。
- 过滤条件:
filtered
值为 51.96%,说明大约一半的行符合条件,可能需要进一步优化以提高效率。
优化建议
-
考虑联合索引: 如果这个查询频繁执行,考虑创建一个联合索引,包括
post_name
,post_type
, 和post_status
。这可以提高查询性能,减少额外的WHERE
条件过滤。CREATE INDEX idx_name_type_status ON wp_posts (post_name, post_type, post_status);
-
监控查询性能: 定期使用
EXPLAIN
监控其他相关查询的性能,以确保索引被有效利用。 -
更新统计信息: 使用
ANALYZE TABLE wp_posts;
来更新统计信息,帮助优化器做出更好的索引选择。
重复上面的过程,把主要的大表都逐一优化一下,借一步网果然又飞一般了。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于