[mysql 详解]mysql 存储引擎

存储引擎#

分类#

show engines; (查看全部存储引擎)

  • InnoDB
  • MRG_MYISAM
  • MEMORY
  • BLACKHOLE
  • MyISAM
  • CSV
  • ARCHIVE
  • PERFORMANCE_SCHEMA
  • FEDERATED

Myisam#

使用 MyISAM 引擎创建数据库,将产生 3 个文件。文件的名字以表名字开始,扩展名之处文件类型:frm 文件存储表定义、数据文件的扩展名为.MYD(MYData)、索引文件的扩展名时.MYI(MYIndex)

  • 不支持外键、事务、行锁
  • 支持全文检索(fulltext)
  • 被大文件系统、操作系统支持
  • null 允许在索引列中
  • 数据文件和索引文件可以放在不同目录
  • 每个字符列可以用不能的字符集
  • 每个 MyISAM 类型的表都有一个 AUTO_INCREMENT 的内部列,当 INSERT 和 UPDATE 操作的时候该列被更新,同时 AUTO_INCREMENT 列将被刷新

插入数据快,空间和内存使用比较低。如果表主要是用于插入新记录和读出记录,那么选择 MyISAM 能实现处理高效率。如果应用的完整性、并发性要求比 较低,也可以使用。

InnoDB#

使用 InnoDB 存储引擎 MySQL 将在数据目录下创建一个名为 ibdata1 的 10MB 大小的自动扩展数据文件,以及两个名为 ib_logfile0 和 ib_logfile1 的 5MB 大小的日志文件

  • 支持事务(ACID)
  • 支持外键
  • 支持行锁
  • 存储行数

    只有在 where 的主键有效,非主键的 where 锁全表

  • 需要更多的内存和储存,

    主内存中建立其专用的缓冲池用于高速缓冲数据和索引
    如果需要对事务的完整性要求比较高(比如银行),要求实现并发控制(比如售票),那选择 InnoDB 有很大的优势。如果需要频繁的更新、删除操作的数据库,也可以选择 InnoDB,因为支持事务的提交(commit)和回滚(rollback)

Myisam 和 InnoDB 的区别#

  • 存储结构
  • 存储空间
  • 可移植性、备份及恢复
  • 事务安全
  • AUTO_INCREMENT
  • 查询效率
  • 行树查询
  • 外键
  • FULLTEXT 全文索引

其他#

事务(ACID)#

  • A 原子性
  • C 一致性
  • I 独立性
  • D 持久性

参考#

MySQL 数据库引擎

MySQL 存储引擎 MyISAM 与 InnoDB 的优劣

MySQL - 常见的三种存储引擎

本作品采用《CC 协议》,转载必须注明作者和本文链接