[转帖]mysql查询慢(Copying to tmp table)解决一例_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 2304 | 回复: 0   主题: [转帖]mysql查询慢(Copying to tmp table)解决一例        下一篇 
第五种族
注册用户
等级:列兵
经验:103
发帖:78
精华:0
注册:2011-11-3
状态:离线
发送短消息息给第五种族 加好友    发送短消息息给第五种族 发消息
发表于: IP:您无权察看 2014-12-16 17:04:48 | [全部帖] [楼主帖] 楼主

最近常常碰到网站慢的情况,登陆到后台,查询一下 /opt/mysql/bin/mysqladmin processlist;

发现一个查询状态为: Copying to tmp table 而且此查询速度非常慢,基本一分钟左右才出来,后面是很多查询,状态为lock。

用命令杀掉此查询 /opt/mysql/bin/mysqladmin kill 

进程号;

后面的查询一下子都好了。 

ok, 找到了问题的原因,此查询
效率太低。问一下程序员,找来此查询的代码,用工具进行一下简单分析。

(说明:这里是我不喜欢
mysql的原因之一,mysql我不知道从哪里能看到内存正在执行哪些
sql,以及完整的sql是什么。)
explain
SELECT a.* , IF(b.`gid` IS NULL , 0, SUM( b.`mark` )) AS `score` ,
IF(c.`b_times` IS NULL ,0, c.`b_times`) AS `day_b_times`
FROM `league_info` AS a LEFT JOIN `mark_logs` AS b ON b.`day_date` = '2006-03-22'
AND b.`gid` = a.`id` LEFT JOIN
`visit_stat` AS c ON c.`stat_id` = a.`id` AND c.`type` = 'league'
AND c.`day`='2006_03_22' WHERE a.`validate`='1' GROUP BY
a.`id`
ORDER BY day_b_times DESC, a.`id`;
+----+-------------+-------+------+-------------------------------+------------------+---------+---------------------+------+----------------------------------------------+
| id | select_type | table | type | possible_keys


看了一下,其实此查询嵌套用得不好,作为程序员应该尽量避免用 not in ,in, 

left join
,right


join 等等,不过这些不归我管,我只能提一些建议。

(顺便说一声:
oracle里面可以用 exist ,not exist, minus等代替in ,not in 

效率高出很多 )

此分析对我没有太大的作用,因此用google查询了一下,发现网上一篇文章讲得很好,我给转贴了,感兴趣可以看看

Copying to tmp table on disk The temporary result set was larger than tmp_table_size and the
thread is now changing the in memory-based temporary table to a disk based one to save memory.


哦,原来是这样的,如果查询超出了tmp_table_size的限制,那么mysql用/tmp保存查询结果然后返回给客户端。

set global tmp_table_size=209715200
(200M)


再次运行此查询,用/opt/mysql/bin/mysqladmin processlist; 进行观察,发现不会出现上述问题.

至此问题解决.

--转自 北京联动北方科技有限公司




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论