楼主: vkarenwang

请教:mysql 运行一段时间后速度变慢问题

[复制链接]
论坛徽章:
0
11#
 楼主| 发表于 2012-11-10 23:47 | 只看该作者
本帖最后由 vkarenwang 于 2012-11-10 23:53 编辑
dukope 发表于 2012-11-10 22:27
好吧 之前没仔细看你的sql.很显然 这条sql有排序操作,但是在group by字段上有没有索引,所以使用了临时内存 ...


有那些group by字段的复合索引,(顺序同Group by的顺序)但是执行时竟然用不到,a,b两表数据量不大都是 40915笔,order by NULL试过了,不能改善速度,也就是用不用时间都差不多。----谢谢您指点。

使用道具 举报

回复
论坛徽章:
0
12#
 楼主| 发表于 2012-11-11 08:15 来自手机 | 只看该作者
vkarenwang 发表于 2012-11-10 23:47
有那些group by字段的复合索引,(顺序同Group by的顺序)但是执行时竟然用不到,a,b两表数据量不大都是 ...

还有疑惑的一点,Copying to tmp table会随数据库运行时间的变长而变长,不知道那边问题?这条SQL在其他服务器上执行就一直保持0.5秒左右。

使用道具 举报

回复
论坛徽章:
9
蛋疼蛋
日期:2011-10-18 11:00:17ITPUB十周年纪念徽章
日期:2011-11-01 16:25:51蜘蛛蛋
日期:2011-11-09 13:48:06迷宫蛋
日期:2011-11-24 10:38:342012新春纪念徽章
日期:2012-01-04 11:56:44蜘蛛蛋
日期:2013-07-12 21:52:36凯迪拉克
日期:2013-12-12 09:53:072014年新春福章
日期:2014-02-18 16:44:08马上有对象
日期:2014-02-18 16:44:08
13#
发表于 2012-11-12 16:47 | 只看该作者
这是myisam还是innodb表,如果是innodb,这2张表是不是经常删数据?  结果有多少行?

使用道具 举报

回复
论坛徽章:
0
14#
 楼主| 发表于 2012-11-12 17:32 | 只看该作者
dukope 发表于 2012-11-12 16:47
这是myisam还是innodb表,如果是innodb,这2张表是不是经常删数据?  结果有多少行?

myisam 这两张表 的数据几乎是静态的,自从导入进去后 就只有select 的动作,没有其他操作。

使用道具 举报

回复
论坛徽章:
0
15#
 楼主| 发表于 2012-11-13 15:17 | 只看该作者
vkarenwang 发表于 2012-11-12 17:32
myisam 这两张表 的数据几乎是静态的,自从导入进去后 就只有select 的动作,没有其他操作。

十分感谢dukope的回复,问题是:就在这一台会出现随着instance开启时间的增长那句SQL 会逐渐变慢,我测过把这个数据库搬到其他服务器上去执行那个SQL 执行速度始终保持在0.5秒以内,所以不明白为什么会在那台上会逐渐变慢......

使用道具 举报

回复
论坛徽章:
4
2012新春纪念徽章
日期:2012-01-04 11:54:262013年新春福章
日期:2013-02-25 14:51:242014年新春福章
日期:2014-02-18 16:43:09马上有钱
日期:2014-02-18 16:43:09
16#
发表于 2012-11-15 16:16 | 只看该作者
992 sleeping -》show processlist如果出现大量的sleep 进程说明数据库需要修改配置文件,限制每一个会话连接,空连接时间为30S或者2分钟。

使用道具 举报

回复
论坛徽章:
0
17#
 楼主| 发表于 2012-11-16 09:01 | 只看该作者
jasperjohn 发表于 2012-11-15 16:16
992 sleeping -》show processlist如果出现大量的sleep 进程说明数据库需要修改配置文件,限制每一个会话连 ...

我连接的session 只有我一个或者 两三个而已。

使用道具 举报

回复
论坛徽章:
3
迷宫蛋
日期:2013-01-18 08:52:192013年新春福章
日期:2013-02-25 14:51:24优秀写手
日期:2014-09-05 06:00:03
18#
发表于 2012-11-19 08:46 | 只看该作者
vkarenwang 发表于 2012-11-9 14:27
执行计划如上图所示。

从你的执行计划来看,你说某表只有4w多条数据,而执行计划中,没走索引,对b表也扫描了4w多行。看你的sql,用到group by,建议你对 b.code_gender_oid, b.code_race_oid, b.code_region_oid
字段建立联合索引。如果想进一步优化,可建立联合索引和前缀索引的结合。

使用道具 举报

回复
论坛徽章:
3
迷宫蛋
日期:2013-01-18 08:52:192013年新春福章
日期:2013-02-25 14:51:24优秀写手
日期:2014-09-05 06:00:03
19#
发表于 2012-11-19 09:43 | 只看该作者
不好意思,你已经建了联合索引。但奇怪的是,这时候应该走联合索引的却没有走,用到了文件排序!!是什么因素导致的呢?这个非常好奇,希望楼主保护现场,继续关注。

使用道具 举报

回复
论坛徽章:
0
20#
 楼主| 发表于 2012-11-19 10:00 | 只看该作者
ifeelstupid 发表于 2012-11-19 09:43
不好意思,你已经建了联合索引。但奇怪的是,这时候应该走联合索引的却没有走,用到了文件排序!!是什么因 ...

问题已经解决了,联合索引顺序有问题。

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表