为什么mysiam不支持外键,事务

Posted althus

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么mysiam不支持外键,事务相关的知识,希望对你有一定的参考价值。

知其然,不知其所以然!

 

我们都知道mysiam不支持外键和事务。 Innodb支持事务和外键。 5.6版本以后默认的引擎是Innodb。

那么为什么Mysiam不支持外键和事务呢?

1. 先说外键。

  外键的作用是什么? 保持数据完整性。 

  技术图片

 

  这张图,没有数据一致性的约束。 

  换句话说,artist_id在artist表中有没有是无所谓的。 

  在关系数据库年代,我们要约束数据一致性,这种设计肯定不行,所以我们会加上外键约束。 

  但是早期数据库设计的时候,和Excel表没有区别,只是用来存数据的。 所以mysiam不支持外键。 在13年的版本更迭中,有计划加入支持外键,但后续取消了。

2. 再说事务

  从设计的角度来说, Mysiam设计的是非聚簇索引,B+树(?是B+树吗?为什么官方文档8.0是写的B树?有空再看下。)的叶节点存的都是指针。所以读取的所读非常快。 并且所有的写入都是加在表的最后一行。


  我自己的理解。 设计就是这样。 Mysiam不支持数据恢复。数据存储的格式是指针引用。理论上可以支持,但是开销大。所以人为设计不支持。 Innodb叶节点就是数据。 支持行锁,所以支持事务比较简单。 

 

以上是关于为什么mysiam不支持外键,事务的主要内容,如果未能解决你的问题,请参考以下文章

Innodb和Mysiam引擎的区别

MyIsam与InnoDB的区别

MySIAM与Innodb引擎

innodb和myisam的区别

Mysql优化简绍一

android开发三大框架