免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1292 | 回复: 0
打印 上一主题 下一主题

MyISAM和InnoDB的选择 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-20 09:46 |只看该作者 |倒序浏览

* 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数据文件,方便备份和还原



您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP