最近研究zblog仿站,所以在本地安装了一下zblog,过程中有一项表存储引擎如何选择,其中只有两个选项,InnoDB和MyISAM不知道怎么选择了,顺手百度了一下,简单了解就够我用了也没必要深究,又不去面试。
MySQL支持的存储引擎有MyISAM、InnoDB、BDB、MEMORY、MERGE、EXAMPLE、NDB Cluster、ARCHIVE、CSV、BALCKHOLE、FEDERATED等,其中InnoDB和BDB提供事务安全表,其他存储引擎都是非事务安全表。
我这种懒人,思维比较单纯不喜欢较真儿,zblog安装给我两个选项,说明这哥俩都可以随便选那种并且最常用对吧,自己查如上面最少支持十一种存储方式,我滴个乖乖知识量太大了,没时间浪费在上面毕竟也用不到。主要研究下InnoDB和MyISAM区别、使用场景什么的。
InnoDB存储引擎
InnoDB是目前MYSQL的默认存储引擎,是事务型数据库的首选引擎,是目前最重要、使用最广泛的存储引擎。主要特性有:
- 提供了事务,回滚以及系统崩溃修复能力和多版本迸发控制的事务的安全。
- 支持自增长列(auto_increment)。
- 支持外键(foreign key)。
- 支持MVCC的行级锁。
- 索引使用的是B+Tree。
优点:提供了良好的事务处理、崩溃修复能力和并发控制。
缺点:读写效率较差,占用的数据空间相对较大。
场景:既有读写也挺频繁,请使用InnoDB。不知道如何选择时,也可以选择InnoDB,用以应对未来可能存在的复杂业务。
MyISAM存储引擎
MyISAM 这种存储引擎不支持事务,不支持行级锁,只支持并发插入的表锁,主要用于高负载的select。
优点:占用空间小,处理速度快。
缺点:是不支持事务的完整性和并发性。
场景:表中绝大多数都只是读查询(一般R/W > 100:1且update相对较少),可以考虑 MyISAM
另外,一个数据库可以存在多种存储引擎的表,一般默认的都是InnoDB存储引擎,所以不知道怎么选择的话,闭眼选InnoDB肯定错不了 :@(赞一个)
查看默认存储引擎:
SHOW VARIABLES LIKE 'default_storage_engine%';
试了一下,默认是InnoDB :@(击掌)
评论(0)