mysql 存储引擎学习

现在我们常用的MySQL存储引擎主要是两种:InnoDB and MyISAM。

1.MyISAM 

  执行效率高

   不支持事务

   不支持外键

   每个MyISAM在磁盘上存储成3个文件,其中文件名和表名都相同,但是扩展名分别为:

  • .frm(存储表定义)
  • MYD(MYData,存储数据)
  • MYI(MYIndex,存储索引)

2.InnoDB(当前mysql的默认 存储引擎)

   支持事务:提供具有提交、回滚和崩溃恢复能力的事务安全。

   支持外键约束。

   支持行级锁。

   对比MyISAM存储引擎,InnoDB的写处理效率差一些以及会占用更多的磁盘空间来保留数据和索引。

  在以下场合下,使用InnoDB是最理想的选择:

  更新密集的表。InnoDB存储引擎特别适合处理多重并发的更新请求。
  事务。InnoDB存储引擎是支持事务的标准MySQL存储引擎。
  自动灾难恢复。与其它存储引擎不同,InnoDB表能够自动从灾难中恢复。
  外键约束。MySQL支持外键的存储引擎只有InnoDB。
  支持自动增加列AUTO_INCREMENT属性。

3.MEMORY

  采用的逻辑存储介质是系统内存。

  最大的特点就是速度快。但是也因为在内存中,当mysqld守护进程崩溃时,所有Memory数据都会丢失。

  Memory要求存储在数据表里的数据使用的是长度不变的格式,这意味着不能使用BLOB和TEXT这样的长度可变的数据类型,VARCHAR是一种长度可变的类型,但因为它在MySQL内部当做长度固定不变的CHAR类型,所以可以使用。

还有一些其他类型的存储引擎。因本人实际开发中,未曾接触,暂不总结。

原文地址:https://www.cnblogs.com/lingshao/p/5580257.html