MySQL SELECT COUNT(*) 花费6秒,如何优化
服务器阿里云ECS,centos, mariadb,数据表 info 现有13万条数据,然后执行了下面这一段:
sql
#status是表info的一个索引字段 SELECT COUNT(*) FROM `info` WHERE `status`='1' #status=1为10万数据
执行花费 6987.0 ms 有时候会更长(尤其是第一次的时候)。如何优化?
阿里云ECS 1G读写性能
[root@aliyun basic]# dd if=/dev/zero of=test bs=64k count=4k oflag=dsync
4096+0 records in
4096+0 records out
268435456 bytes (268 MB) copied, 23.0049 s, 11.7 MB/s
**对比linode 1024 1G***
[root@linode ~]# dd if=/dev/zero of=test bs=64k count=4k oflag=dsync
4096+0 records in
4096+0 records out
268435456 bytes (268 MB) copied, 3.86091 s, 69.5 MB/s
后续 2015-6-30
我将内存增加到了2G之后,查询明显变快了!不超过1s!
关于一些回复说status加索引,肯定加了,不然怎么跑得动,直接504的好不
吐槽一下很多回复的本身就是错误的,我这两天找了很久,阿里云的磁盘IO性能确实是很低的。
阿里云后台管理,磁盘IO的平均是 0.015MB/s。使用
fdisk -l
阿里云ECS是
512 byte
,Linode 是
4094 byte
。其实最根本问题还是IO问题,如果真的说将status另外独立表,这也是无济于事的,维护成本将增加。阿里云是普通磁盘,Linode 是SSD,确实是不具备可比性。
fredmo
9 years, 10 months ago