码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2019-10-04 23:21:44      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:art   png   com   src   读取   info   ima   through   数据库设计   

知其然,不知其所以然!

 

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

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

1. 先说外键。

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

  技术图片

 

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

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

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

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

2. 再说事务

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


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

 

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

标签:art   png   com   src   读取   info   ima   through   数据库设计   

原文地址:https://www.cnblogs.com/althus/p/11623380.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!