Chinaunix
标题:
MyISAM和InnoDB的选择
[打印本页]
作者:
TomLeng
时间:
2011-12-20 09:46
标题:
MyISAM和InnoDB的选择
* myisam只能缓存索引,innodb既能缓存索引,又能缓存数据,如果内存足够大,选innodb
* myisam因为不能自己缓存数据,所以比innodb更加依赖系统缓存,所以选myisam的话,在满足key buffer的情况下,多留些内存给系统
* InnoDB行锁是通过给索引加锁来实现的,也就是,只有通过索引条件检索数据时,InnoDB才能使用行级锁,否则使用表锁
* MyISAM表的读写会相互阻塞,且在MyISAM的锁调试机制里,写锁会优先于读锁被满足,这将导致一连串密集的写会使读一直处于lock状态
* 当Innodb使用行锁时,Insert/Update/Deletet和Select不会相互影响,所以写多读少,或有事务需求时,选Innodb
* Myisam只有表锁,Update/Delete和Select会相互影响,只有Insert在某些情况下可以和Select并行,所以在写少读多,或以insert和select为主时,选myisam
* InnoDB表采用聚簇索引,所以InnoDB表的主键索引很关键,争取每个表都能有有意义的主键索引
* InnoDB表不擅长做聚合操作,比如count(),并发较高的话,会引起CPU飙升,所以聚合操作较多的环境使用MyISAM表
* 在线使用的slave,用InnoDB,特别是在写较多的情况下,InnoDB的追同步的速度是MyISAM的好几倍,而且消耗的Disk Util也要少很多
* 作为冷备的slave,用myisam,这样可以直接copy数据文件,方便备份和还原
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2