引擎

MySQL常见的引擎有:InnoDB、MyISAM、Memory、Merge-MyISAM。

InnoDB

支持事务、外键、聚簇索引、行级锁。

Innodb引擎提供了对数据库ACID事务的支持,并且实现了SQL标准的四种隔离级别,

MySQL运行时Innodb会在内存中建立缓冲池,用于缓冲数据和索引。

不支持FULLTEXT类型的索引,没有保存表的行数,当SELECT COUNT(*) FROM TABLE时需要扫描全表。

行级锁的粒度小,写操作不会锁定全表,并发较高时,使用Innodb引擎会提升效率。

但是使用行级锁也不是绝对的,如果在执行一个SQL语句时MySQL不能确定要扫描的范围,InnoDB表同样会

  • 经常更新的表,适合处理多重并发的更新请求。
  • 支持事务。
  • 可以从灾难中恢复(通过bin-log日志等)。
  • 外键约束,只有他支持外键。
  • 支持自动增加列属性auto_increment。

MyISAM

不支持事务、外键、非聚簇索引、查询速度快、表级锁、支持全文索引、可以无主键。

表级锁粒度较粗,INSERT、UPDATE时需要锁定整个表,效率便会低一些。

MyIsam 存储引擎独立于操作系统,在创建表的时候,会创建三个文件,一个是.frm文件用于存储表的定义,一个是.MYD文件用于存储表的数据,另一个是.MYI文件,存储的是索引。操作系统对大文件的操作是比较慢的,这样将表分为三个文件,那么.MYD这个文件单独来存放数据自然可以优化数据库的查询等操作。有索引管理和字段管理。MyISAM还使用一种表格锁定的机制,来优化多个并发的读写操作,其代价是你需要经常运行OPTIMIZE TABLE命令,来恢复被更新机制所浪费的空间。

Memory

存储于内存中,每个memory表对应一个.frm的磁盘文件。默认使用Hash索引,也可选择Btree索引。

Merge-MyISAM

是一组MyISAM表的组合,这些MyISAM表必须结构完全相同,merge表本身并没有数据,对merge类型的表可以进行查询,更新,删除操作,这些操作实际上是对内部的MyISAM表进行的。

powered by Gitbook更新时间: 2021-05-27 10:52:40

results matching ""

    No results matching ""