myisam和innodb 数据文件大小 和 数据插入速度 对比

选择的业务表:{ "tab_login_addr", "tab_map_race", "tab_item", }
选择的引擎:{ "myisam", "innodb", }

数据文件大小对比


结果:
从数据库的角度
 TABLE_NAME            | data_size | index_size | TABLE_ROWS
 innodb_tab_item       | 3678.00MB | 4861.00MB  |   46726223
 innodb_tab_login_addr | 877.00MB  | 1253.72MB  |   11043148
 innodb_tab_map_race   | 233.77MB  | 123.73MB   |    4492434
 myisam_tab_item       | 1893.22MB | 3399.12MB  |   46726223
 myisam_tab_login_addr | 608.83MB  | 407.57MB   |   11044195
 myisam_tab_map_race   | 141.37MB  | 71.14MB    |    4492058
从文件系统的角度
8.6G  innodb_tab_item.ibd
3.4G  myisam_tab_item.MYI
1.9G  myisam_tab_item.MYD
372M  innodb_tab_map_race.ibd
 72M  myisam_tab_map_race.MYI
142M  myisam_tab_map_race.MYD
2.2G  innodb_tab_login_addr.ibd
408M  myisam_tab_login_addr.MYI
609M  myisam_tab_login_addr.MYD

总结:
相同数据的情况下,MyISAM的文件大小要远远小于InnoDB的文件大小。一般 myisam比innodb 为(50~65)比100




数据装载速度

优化建议:

innodb:
禁用autocommit
如果有二级索引,先去掉二级索引,再装载数据,最后添加二级索引
如果有外键,先去掉外键,再装载数据,最后添加外键
如何可以的话,尽量提高io能力,innodb的内存大小,调整刷新策略

myisam:
尽可能提高io能力,key_buffer_size参数,磁盘的刷新策略


装载方式:(选择的方式:3)
   1 长SQL  insert into table(xx,xx) values(xx,xx),(xx,xx)
   2 先使用SELECT...INTO OUTFILE导出,再使用 LOAD DATA INFILE导入
   3 使用 insert into ...select...
   
结果:

140分钟  innodb_tab_item.ibd
52分钟  myisam_tab_item
5分钟  innodb_tab_map_race.ibd
2分钟  myisam_tab_map_race
23分钟  innodb_tab_login_addr
9分钟  myisam_tab_login_addr

结论:
MyISAM的插入速度要远远高于InnoDB。一般InnoDB消耗的时间是MyISAM的150%以上,而且随着数据量的增多差别越明显。
但是innodb有较大的优化和调整空间。所以在不同情况下,差别比较大。

有话要说