wordpress 发现 mysql 执行这条语句时间太长了,咋优化?

2017-10-22 02:12:18 +08:00
 zzuyanan
show full processlist:
语句如下:Copying to tmp table | SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts INNER JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id) WHERE 1=1 AND ( wp_term_relationships.term_taxonomy_id IN (749) ) AND wp_posts.post_type = 'post' AND (wp_posts.post_status = 'publish') GROUP BY wp_posts.ID ORDER BY wp_posts.post_date DESC LIMIT 0, 24 |

这似乎是在检索某个分类下的最新的文章,但是执行时间高达 103 秒,难道是数据量太大,大约 600 万文章吧,那也不至于这么慢? vps 配置也不低啊,6 核 8G 内存,ssd 硬盘。 请教各位 了!
4958 次点击
所在节点    MySQL
15 条回复
msg7086
2017-10-22 05:58:39 +08:00
600 万文章用 WP 你不定制的话这配置我觉得跑不动。
隔壁有个 60 万文章的用 DLE (号称比 WP 快?)独服都跑不动,老老实实定制完,双核 VPS 就能随便跑了。
abccccabc
2017-10-22 08:36:26 +08:00
个人感觉 wordpress 的表结构设计不好,posts 表数据一大,死翘翘。

SQL_CALC_FOUND_ROWS 在速度上会比 COUNT(*)慢很多,具体有多慢,取决于你的索引还有一些别的因素, count 大约要比 SQL_CALC_FOUND_ROWS 快上 10 倍.

https://www.percona.com/blog/2007/08/28/to-sql_calc_found_rows-or-not-to-sql_calc_found_rows/
zzuyanan
2017-10-22 09:44:52 +08:00
@msg7086 哪里有定制啊 ,请教了
zzuyanan
2017-10-22 09:55:56 +08:00
@msg7086 另外 DLE 是啥?
msg7086
2017-10-22 10:58:23 +08:00
@zzuyanan DLE = Datalife Engine
哪里有定制?我也不知道。把预算和定制需求报出去问问看咯。
wdlth
2017-10-22 11:11:18 +08:00
有些功能不常用的可以把它精简一下,像这个功能的结果你可以先缓存起来,毕竟不是所有时候都需要更新最新文章列表。
zzuyanan
2017-10-22 11:35:59 +08:00
@wdlth 我目前就是这种思路,每天定时更新最新文章 3 次并缓存,但是每次更新都得要 2 个小时啊,因为分类很多,如果每个分类我只更新前 20 页的内容,也需要很长时间啊
zzuyanan
2017-10-22 11:37:50 +08:00
@msg7086 问了报价,8000 !
AlwaysBehave
2017-10-22 11:50:49 +08:00
@zzuyanan 算很便宜的吧,按照现在这个“趋势”
你具体需求是什么?实时更新?
zzuyanan
2017-10-22 13:52:18 +08:00
@AlwaysBehave 其实就是让分类页的最新文章能够快速显示出来,现在表太大 40G,显示的太慢了。
rogwan
2017-10-22 16:21:37 +08:00
@zzuyanan Copying to tmp table 你这个不是建一个临时的新文章表吗?这个 copy 任务可以定时后台执行,用户数据直接从 tmp table 里读取最新文章,和主表多大无论几十 G 都没有关系了。
zzuyanan
2017-10-22 19:16:16 +08:00
@rogwan 这个思路好,从临时表里抽数据
zzuyanan
2017-10-22 19:19:09 +08:00
@abccccabc 是的,所以我准备再建立一个 wp_posts_1 表,只放最新的 10000 条记录,然后从这个表抽取数据,经过测试非常快。但是问题来了,如何让 wordpress 从 wp_posts_1 表里提取数据呢?要知道默认都是从 wp_posts 表提取的,wp_query 并没有提供改表的参数啊
aksoft
2017-11-21 15:08:57 +08:00
随便问一句,这个是什么网站。。
likuku
2017-12-03 12:43:31 +08:00
@zzuyanan 没有参数,那就去改 wp 源代码了哦

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/399587

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX