转载自http://gooderlee.iteye.com/blog/1179221
最近有个项目,对于数据库的并发性要求很高,对于事物,Rollback没有要求,同时数据库升级到5.5。所以,闲来没事儿,就拿起数据库来看看引擎性能。
我们通过创建一个 Procedure,让引擎每秒插入50条数据到 MySQL,然后我们通过修改表的引擎来查看IO的情况。
我们采用如下表结构
- DROP TABLE IF EXISTS `test`.`t`;
- CREATE TABLE `test`.`t` (
- `id` int(10) unsigned DEFAULT '0',
- `name` varchar(45) DEFAULT 'default',
- `time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
- ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
1、创建一个 Procedure:
- delimiter $$
- create procedure loop_test()
- begin
- set @x=1;
- while @x<=50 do
- insert into test.t (TIME) values(now());
- end while;
- end;
- $$
2、创建一个EVENT事件,每秒执行Procedure
- CREATE EVENT test_insert
- ON SCHEDULE EVERY 1 SECOND
- DO call loop_test;
3、打开事件调度器,true为打开
- SET GLOBAL event_scheduler=TRUE
执行了这句代码之后就OK了
测试结果:
默认MySQL配置下面,通过测试发现,使用INNODB的方式 数据库写入频繁,而MyISAM没有太频繁的磁盘IO操作。
在我们这个项目中,无需事物,回滚和送耦合的程序架构中还是采用MyISAM好了!