mysql 同一查询语句在2台服务器上执行都在1000MS以上,而本机只要47ms

来源:百度知道 编辑:UC知道 时间:2024/05/20 17:19:19
MYSQL 5.0.27
------------------------------
select a.* from ml_small a,ML_inforight b where a.infocode=b.infocode and subString(b.infocode,1,2)='3a1'and b.dircode = 'AY0a14' order by a.pslocation asc
------------------------------
2台服务的配置分别是4核CPU4G内存、8核CPU4G内存,这条语句在4CPU上执行花了1000MS,在8CPU上执行花了1390MS。

而在我的笔记本赛扬1.6G单核CPU,执行只花了47MS,不知道问题出在哪?
1、ahjuns --说的可能不对,应该与CPU无关,可能是什么配置问题?另外更改下8CPU是1000MS,4CPU是1390MS,本机是47MS。、、
2、超尘离梦 --说的有可能,我把order by 去掉之后,速度明显加快,但是为什么有order by在服务器和本机差别这么大,还没找到根本原因,会不会是因为本机是开发环境,服务器是服务环境配置?
3、desert_guy --老大,这条语句是在循环体内的,一条当然不影响,但是几个甚至几十个循环之后,一个页面显示要花6秒、1分、甚至更长!

我建议查一下执行计划,看看本机和服务器的执行计划有没有什么不同,然后再看看造成不同的原因,有的时候仅仅是因为访问表的方式不同,就可能造成执行时间的巨大差异。

另外在计划中仔细看一下有关索引的描述,是不是使用了索引有时候对效率影响也是极大

mysql> explain select a.* from ml_small a,ML_inforight b where a.infocode=b.infocode and subString(b.infocode,1,2)='3a1'and b.dircode = 'AY0a14' order by a.pslocation asc

这问题无敌了

NONONO 不是问题,你的做SQL数据库的时候,查询的时候,单核的话搜寻时间肯定少,CPU多核心是相连的,在CPU内部里虽然是多个核心,但是都是相连的,所以你做SQL执行语句的时候,多核都在串行工作的,自然延时高。跟你赛扬没有什么关系,这个就是单核心和多核心的串行执行指令的延时问题,从这个上面看不能说多核心差哦,多核CPU处理性能强,但是自然延时要大些,这个是必然的毕竟芯片多了电路信号走线自然久些。

服务器和本机当然不一样了,比如一个网站,本机的速度那是相当的快。你要上传到服务器不就满了吗

NONONO 不是问题,你的做SQL数据库的时候,查询的时候,单核的话搜寻时间肯定少,CPU多核心是相连的,在CPU内部里虽然是多个核心,但是都是相连的,所以你做SQL执行语句的时候,多核都在串行工作的,自然延时高。跟你赛扬没有什么关系,这个就是单核心和多核心的串行执行指令的延时问题,从这个上面看不能说多核心差哦,多核CPU处理性能强,

首先,分析performance问题,要搞清楚这些事件花在什么地方了。一般来说,一个查询肯定会包含:
1. 与服务器之间的通讯时间(NETWORK)
2. 数据库查询时间(DB)
3. 结果返回和展示时间(OLAP)

因此,你需要检查这几个地方

1. 本机和服务器上的这个表是否记录条数一样?索引是否一样?(DB)
2. ping一下服