需要在MySQL建表插入近100万的数据,主要用于select操作。
由于没怎么用过数据库,平时也就几百条记录了不得了,就先我在自己的机子上试了下(ubuntu),load data 导入进去也就10来秒。然后换到服务器windows平台上,用的是安装版的mysql。结果load data 需要6分多种,select也很慢。一直以为是windows的问题,但在自己的windows平台上虽然慢了点,也在20秒以内。
creat table都一样,我一直不知道是什么地方的原因。刚才show create table 看了下,发现区别主要在engine上。安装版本的默认引擎是InnoDB。
我就回ubuntu指定了InnoDB,也成了6分多种- -
虽然之前也听说过InnoDB因为事务和日志要慢点,但差这么多还是有问题的吧,大大给解释啊。
表是7个字段,主要是int和varcha。1个primary,一个3字段索引。
论写性能,innodb确实要低于myisam,写的时候innodb性能消耗主要两方面:事务提交和写日志。
但load data时,这两个都不存在,整个load data是一个事务,完成后会提交,也就没有回滚日志。之所以比myisam慢是因为做数据合法性的检查。
如果你不是100万数据一次性导入,而是分几次,每次数据量递增,可以看出:myisam的平均导入速度,不随数据量增加而下降,是稳定的,而innodb则会随数据量增加而下降。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。