Innodb | MyISAM |
---|---|
支持事务 | 不支持事务 |
支持外键 | 不支持外键 |
行级锁 | 表级锁 |
能崩溃恢复 | 不能崩溃恢复 |
B+树聚簇索引 | B+树非聚簇索引 |
实现了MVCC | 没有实现MVCC |
Innodb怎么保证崩溃恢复的?
redolog和undolog,redo日志记录了事务的操作(也是事务持久化的保证,数据库断电后还可以通过redolog进行事务),undo日志用来记录事务发生前的数据版本(也是用来多版本并发控制读的保证)多版本并发控制。
而用来主从复制的binlog的创建在引擎层面之上,与引擎无关。
什么是MVCC?
多版本并发控制
MVCC 使用了一种不同的手段,每个连接到数据库的读者,在某个瞬间看到的是数据库的一个快照,写者写操作造成的变化在写操作完成之前(或者数据库事务提交之前)对于其他的读者来说是不可见的。
当一个 MVCC 数据库需要更一个一条数据记录的时候,它不会直接用新数据覆盖旧数据,而是将旧数据标记为过时(obsolete)并在别处增加新版本的数据。这样就会有存储多个版本的数据,但是只有一个是最新的。
网友评论