MySQL-存储引擎


一、Mysql常用引擎

InnoDB、MyISAM

二、InnoDB-MySQL的默认事务性引擎

InnoDB采用两阶段锁定协议,事务执行过程中,随时都可以执行锁定,锁只有在执行commit或rollback时才能释放,这是隐式锁定。

通过特定语句可以显示锁定,例如:for update。


  • InnoDB数据存储在表空间,表空间由一系列数据文件组成,InnoDB可以将每个表的数据和索引存放在单独的文件中。
  • 采用MVCC来支持高并发,默认隔离级别是repeatable read,并通过间隙锁(Next-Key locking)防止幻读。InnoDB会给符合条件的已有数据记录的索引项加锁,对于键值在条件范围内但并不存在的记录,叫做间隙锁。
  • InnoDB表是基于聚簇索引建立的,二级索引必须包含主键列。
  • 自适应哈希索引、插入缓冲区等。
  • 支持热备份。


MVCC:多版本并发控制,是行级锁的变种,很多情况下可以避免加锁,它是通过保存数据在某个时间的快照来实现的。对于不同存储引擎有乐观并发控制和悲观并发控制。

三、MYISAM

    • 不支持事务和行级锁,崩溃后无法恢复。
    • 将表存储在两个文件:数据文件.MYD、索引文件.MYI。
    • 表级锁,读写锁,在表读取的同时可以插入数据。
原文地址:https://www.cnblogs.com/bigshark/p/7912243.html