知其然,不知其所以然!
我们都知道mysiam不支持外键和事务。 Innodb支持事务和外键。 5.6版本以后默认的引擎是Innodb。
那么为什么Mysiam不支持外键和事务呢?
1. 先说外键。
外键的作用是什么? 保持数据完整性。
这张图,没有数据一致性的约束。
换句话说,artist_id在artist表中有没有是无所谓的。
在关系数据库年代,我们要约束数据一致性,这种设计肯定不行,所以我们会加上外键约束。
但是早期数据库设计的时候,和Excel表没有区别,只是用来存数据的。 所以mysiam不支持外键。 在13年的版本更迭中,有计划加入支持外键,但后续取消了。
2. 再说事务
从设计的角度来说, Mysiam设计的是非聚簇索引,B+树(?是B+树吗?为什么官方文档8.0是写的B树?有空再看下。)的叶节点存的都是指针。所以读取的所读非常快。 并且所有的写入都是加在表的最后一行。
我自己的理解。 设计就是这样。 Mysiam不支持数据恢复。数据存储的格式是指针引用。理论上可以支持,但是开销大。所以人为设计不支持。 Innodb叶节点就是数据。 支持行锁,所以支持事务比较简单。
原文地址:https://www.cnblogs.com/althus/p/11623380.html
时间: 2024-10-09 14:44:39