mysql innodb引擎学习

最近回头看了一下《mysql从入门到放弃》这本书,专门看了看我们经常使用的innodb引擎,现在记录一下学习的内容吧。

有错误请指正。

Mysql5.5后默认引擎为innodb

innodb特性

innodb支持事务,支持行锁,支持外键。是一个专门为大容量存储设计的存储引擎。默认索引b+tree。

关于事务,可以参照:mysql 事务ACID

关于行锁,可以参照: mysql 行锁

B-tree

关于B-tree这里先简述一下,后续有空补上关于b-tree 和b+tree的内容。

B-tree是一种专门为外部存储设备设计平衡多路查找树。磁盘存储是分磁盘块的,每个块存储他的主键还有data,b-tree将数据排序,然后再数据前后分别有指针指向小于, 等于,大于他的数据所在磁盘块。这样在尽量少的IO次数下,通过二分查找,快速定位所需数据。

Mysql使用的b+tree是在b-tree基础上改进的,将所有数据放在同一个叶节点上,减少查找树的高度,更多减少磁盘IO次数。

所以这也就是为什么mysql主键推荐使用自增。因为他的主键(聚集索引)在物理上连续,这样在查找数据是,通过B+tree减少排序带来的性能影响。并且主键较小,也减少了磁盘的占用空间。

关于主键选择自增,UUID还是雪花算法,回来再专门开一个博客写吧。

你可能感兴趣的:(sql)