需要在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则会随数据量增加而下降。
----- 羞涩的分割线 -----
我用innodb的主要原因是他的写稳定,如果你写很少,建议用myisam,myisam在独性能上高于innodb。
一般对于读写要求都很高的,我建议做主从,主:innodb,担负读写;从:myisam,只读。