MySql-存储引擎详解
你好! 感谢您花费几分钟的时间阅读本篇博客,本人写的是方便学习与记录,要是有错误的地方请您指出,感谢
1 存储引擎基本介绍
我们都知道,表在存储数据的同时,还要组织数据的存储结构,存储结构是由存储引擎决定的,这个存储引擎是表的类型,而不是数据库的类型,并且我们为表设定了一个存储引擎之后,后续我们也可以修改表的存储引擎,MySQL里面支持多种存储引擎。
2 查看存储引擎
我们设计表的时候会发现,MySQL支持好多存储引擎
在众多的存储引擎种,MyISAM和InnoDB是我们用的最多的两个存储引擎了,在MySQL5.5版本之前,默认的存储引擎是MyISAM,现在的默认存储引擎是InnoDB,。
3 存储引擎的区别
我们为一个表选择MyISAM存储引擎,在本地创建了三个文件
- frm存的表结构
- MYD存的表数据
- MYI存的表索引

从这我们可以看出,MyISAM数据与索引是分开存储的,另外,MyISAM应用范围比较小,表级锁限制了读写的性能,因此他通常用于只读为主的工作。 - 支持表级别的锁,因为插入和更新会锁标,不支持事务
- 插入与查询有着较快的速度(不信可以插入500万条数据试试,我自己目测快了15倍左右,没有证实,就是随便玩玩)
- 只读之类的数据分析的项目
InnoDB存储引擎有两个文件,他是现在mysql默认的存储引擎,并且他是一个*事务*安全的存储引擎,它具有*提交*,*回滚*,*崩溃回复*等功能用来保护用户数据,支持行级锁,InnoDB将数据信息在*聚集索引*上,减少io操作,保持数据完整性。
- 支持事务,支持外键
- 支持表级别与行级别的锁
- 支持读写并发,写不阻塞读(MVCC)
- 聚集索引,减少io,提高查询效率
- 适合在经常更新的表,存在并发读写或者事务处理的业务系统
4 如何选择存储引擎
如果对数据库一致性要求比较高,需要事务支持可以选择InnoDB,如果查询多更新少,对查询的性能要求高可以选择MyISAM,但是我本人建议就用InnoDB得了,既然官方都把他设置成默认了,并且它还有那么多的好处,而且还支持事务,咱们也别费那个劲了。
版权声明:本文为a736225348原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。