IT技术博客大学习 共学习 共进步

MyISAM和InnoDB的插入性能测试

DBA@Taobao 2009-10-18 23:10:29 浏览 3,624 次

    测试表结构:

    CREATE TABLE `test` (

     `ID` bigint(20) NOT NULL auto_increment,

     `INT_A` int(11) default NULL,

     `INT_B` int(11) default NULL,

     `INT_C` int(11) default NULL,

     `STRING_A` varchar(50) default NULL,

     `STRING_B` varchar(250) default NULL,

     `STRING_C` varchar(700) default NULL,

     PRIMARY KEY (`ID`),

     KEY `IDX_TEST_IA` (`INT_A`),

     KEY `IDX_TEST_IB` (`INT_B`),

     KEY `IDX_TEST_SA` (`STRING_A`,`INT_C`)

    ) ;

    数据量:总共10个表,每个表插入400w数据

    并发数:每个表并发20个线程去执行插入操作,总共200个线程

    数据特点:除了主键采用自增外,索引相关字段全是随机生成的。字符串的长度和内容都是随机的,平均长度为预定义的一半

    

    

    

    X轴是unix时间戳,Y轴是十秒钟的插入量。从以上测试结果可以看出,InnoDB的插入性能随着数据量的增多一直在下降,而且表现相当不稳定。MyISAM的表现还是比较好的,虽然瞬时插入的谷值一直在下降,但是整体表现很稳定。

    总的来说,Ext3的cache算法性能还是非常不错的,不愧是linux上面备受推崇的文件系统。InnoDB虽然提供了高可用性,但是插入性能方面的表现并不如MyISAM稳定。

建议继续学习

  1. Innodb IO优化-配置优化 (阅读 7,604)
  2. Innodb分表太多或者表分区太多,会导致内存耗尽而宕机 (阅读 7,566)
  3. Innodb 表和索引结构 (阅读 6,041)
  4. InnoDB线程并发检查机制 (阅读 5,605)
  5. Innodb如何使用内存 (阅读 5,103)
  6. Innodb文件表空间结构 (阅读 5,065)
  7. 快速预热Innodb Buffer Pool的方法 (阅读 4,985)
  8. InnoDB的缓存替换策略及其效果 (阅读 4,782)
  9. 多版本并发控制:PostgreSQL vs InnoDB (阅读 4,563)
  10. InnoDB之Dirty Page、Redo log (阅读 4,482)