MySql-存储引擎详解

MySql-存储引擎详解

  你好! 感谢您花费几分钟的时间阅读本篇博客,本人写的是方便学习与记录,要是有错误的地方请您指出,感谢

1 存储引擎基本介绍

  我们都知道,表在存储数据的同时,还要组织数据的存储结构,存储结构是由存储引擎决定的,这个存储引擎是表的类型,而不是数据库的类型,并且我们为表设定了一个存储引擎之后,后续我们也可以修改表的存储引擎,MySQL里面支持多种存储引擎。

2 查看存储引擎

  我们设计表的时候会发现,MySQL支持好多存储引擎MySql-存储引擎详解_第1张图片  在众多的存储引擎种,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得了,既然官方都把他设置成默认了,并且它还有那么多的好处,而且还支持事务,咱们也别费那个劲了。

你可能感兴趣的:(一起探究)