求助, mysql所有查询都变成了慢查询, 但是在mysql client里面又很快

2013-06-25 10:59:08 +08:00
 sdjl
# User@Host: lengxiaohua[lengxiaohua] @ localhost []
# Query_time: 43.612502 Lock_time: 0.000000 Rows_sent: 0 Rows_examined: 0
SET timestamp=1372129298;
commit;


# Time: 130625 11:01:39
# User@Host: lengxiaohua[lengxiaohua] @ localhost [127.0.0.1]
# Query_time: 0.242507 Lock_time: 0.000045 Rows_sent: 1 Rows_examined: 113883
SET timestamp=1372129299;
select * from User where LOWER(email)='123456@vip.qq.com' limit 1;


# User@Host: lengxiaohua[lengxiaohua] @ localhost [127.0.0.1]
# Query_time: 42.509005 Lock_time: 0.000036 Rows_sent: 0 Rows_examined: 1
SET timestamp=1372129298;
update User set login_count = login_count +1 where Userid=116881;

上面是慢查询日志, 同样的sql语句复制到终端里面运行是0.00秒, 但是mysql的io负载很高, 不知道如何分析优化mysql, 求助
3762 次点击
所在节点    MySQL
10 条回复
Livid
2013-06-25 11:01:21 +08:00
表的类型是 MyISAM?
sdjl
2013-06-25 11:24:47 +08:00
@Livid InnoDB 会不会是查询量大导致的?
maja
2013-06-25 11:45:19 +08:00
默认表应该是ci的,这样lower函数不必须

show create table user;

explain select * from User where email = '123456@vip.qq.com';
cbc009
2013-06-25 11:46:19 +08:00
explain一下看看
sdjl
2013-06-25 12:03:06 +08:00
@maja
@cbc009 感谢两位 lower函数导致了全表扫描.... 我先改一下这里
sdjl
2013-06-25 12:43:15 +08:00
需要优化的地方许多, 我正在用慢查询分析工具来找原因
scourgen
2013-06-25 16:22:02 +08:00
还有就是如果开了query cache,那么可能会造成sql语句一会儿执行快一会执行慢

可以用 select sql_no_cache xxxxx强行关闭query cache,这样查出来的东西就是不经过缓存的
Livid
2013-06-25 16:50:29 +08:00
@sdjl 另外就是,像计数器这样的东西,一个对 MySQL 性能影响不会太大的做法是用 Redis 来计数,然后定期写回 MySQL(如果你对 Redis 的数据持久性没信心的话)
msg7086
2013-06-25 18:22:16 +08:00
@Livid memcache也有自己的计数器,也可以用来定期回写
sdjl
2013-06-25 20:42:14 +08:00
@Livid
@msg7086 嗯 谢谢提醒, 我已经暂时关闭登录统计了, 把Session放到内存中, 然后再给一些表添加索引, 现在性能好多了

这次优化主要是靠以下方式:
使用以下方法统计一段时间内各个进程的io使用 http://www.xaprb.com/blog/2009/08/23/how-to-find-per-process-io-statistics-on-linux/
也可以用 iotop 来查看io进程使用io的情况, 然后找到是mysql占用了io, 再用慢查询分析工具来找可能的影响性能的查询

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

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

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

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

© 2021 V2EX