我缓慢查询缓存与memcached,它很好,但有时我们在mysql中有很多缓慢的查询,就像memcached已停止,然后我们的网站关闭。MySQL缓慢查询和memcached
慢查询图:http://i.imgur.com/ReyWe.png
在这个时刻,我们在30秒内得到约100慢查询。它可能是什么? 我们查询:
# Query_time: 5.942602 Lock_time: 0.010214 Rows_sent: 10000 Rows_examined: 493139
SET timestamp=1335194149;
SELECT story_id FROM dug_stories d WHERE d.story_is_permanent=0 AND
(
(d.story_time>1335190543 AND (d.story_pluses-d.story_minuses) > 5)
OR
(((d.story_pluses-d.story_minuses) > 12 OR (d.story_pluses >= 10 AND d.story_minuses<=0)) AND d.story_cat!=48 AND d.st
ory_cat!=131 AND d.story_cat!=55 AND d.story_cat!=44 AND d.story_cat!=126 AND d.story_cat!=53 AND d.story_cat!=370 AND d.story_cat!=381 AND d.stor
y_cat!=304 AND d.story_cat!=497) OR (d.story_cat=48 AND (d.story_pluses-d.story_minuses) > 9) OR (d.story_cat=131 AND (d.story_pluses-d.story_min
uses) > 8) OR (d.story_cat=55 AND (d.story_pluses-d.story_minuses) > 8) OR (d.story_cat=44 AND (d.story_pluses-d.story_minuses) > 9) OR (d.story_c
at=126 AND (d.story_pluses-d.story_minuses) > 13) OR (d.story_cat=53 AND (d.story_pluses-d.story_minuses) > 8) OR (d.story_cat=370 AND (d.story_pl
uses-d.story_minuses) > 8) OR (d.story_cat=381 AND (d.story_pluses-d.story_minuses) > 8) OR (d.story_cat=304 AND (d.story_pluses-d.story_minuses)
> 8) OR (d.story_cat=497 AND (d.story_pluses-d.story_minuses) > 9)
)
ORDER BY d.story_rating DESC, d.story_time DESC LIMIT 0, 10000;
小幅调整查询(而不是全部=类别,我更改为不类别中(要排除的类别)的名单,但格式,可读性更强! ......另外,还要注意的SET TIMESTAMP变量甚至没有被查询中使用的...这是一个硬编码值。
SET timestamp=1335194149;
SELECT
story_id
FROM
dug_stories d
WHERE
d.story_is_permanent = 0
AND ( (d.story_time > 1335190543 AND d.story_pluses - d.story_minuses > 5)
OR ( ( d.story_pluses - d.story_minuses > 12
OR ( d.story_pluses >= 10 AND d.story_minuses <= 0)
)
AND NOT d.story_cat IN (44, 48, 53, 55, 126, 131, 304, 370, 381, 497)
)
OR (d.story_cat = 44 AND d.story_pluses - d.story_minuses > 9)
OR (d.story_cat = 48 AND d.story_pluses - d.story_minuses > 9)
OR (d.story_cat = 53 AND d.story_pluses - d.story_minuses > 8)
OR (d.story_cat = 55 AND d.story_pluses - d.story_minuses > 8)
OR (d.story_cat = 126 AND d.story_pluses - d.story_minuses > 13)
OR (d.story_cat = 131 AND d.story_pluses - d.story_minuses > 8)
OR (d.story_cat = 304 AND d.story_pluses - d.story_minuses > 8)
OR (d.story_cat = 370 AND d.story_pluses - d.story_minuses > 8)
OR (d.story_cat = 381 AND d.story_pluses - d.story_minuses > 8)
OR (d.story_cat = 497 AND d.story_pluses - d.story_minuses > 9)
)
ORDER BY
d.story_rating DESC,
d.story_time DESC
LIMIT
0, 10000;
非常感谢您的帮助! 对不起,我的英文不好:)
非常感谢!我会试试:) – dalopikz 2012-04-24 14:29:21