Mysql相关笔记整理(自用,有误还请指教)

2021/9/3 19:06:32

本文主要是介绍Mysql相关笔记整理(自用,有误还请指教),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

mysql数据库索引使用什么数据结构,为什么使用该结构,存储引擎常用有哪几种,有什么区别,为什么建议每张表使用整型自增主键?

数据结构:B+树。

			若使用二叉树时,当数据出现单边递增或单边递减,则形成像链表一样的结构,树高度则会越来越高,从而导致磁盘IO次数增加;
			若使用红黑树(本质也是二叉树-二叉平衡树)时,当出现大数据量如500w甚至1000w,红黑树的高度是不是会随着数据量而增长,若查询的数据又刚好在树最底层,那查询的磁盘IO至少是树的高度;
			若使用Hash时,很多时候Hash索引查询是比B+树更高效,但是可能出现Hash冲突并且不支持范围查询
			若使用B树,每个叶子节点上都带有data域,mysql查询(show global status like 'innodb_page_size')可以知道每个叶子节点默认大小是16KB,
			而B+是B树的变种,每个叶子节点上存放着冗余索引,在树的最底层为data域,并且形成链表。同为16KB大小,B+树存放的索引可以更多(即,树的宽度更宽,降低了树的高度,磁盘IO次数也就降低了)

查询原则:将范围磁盘索引读到内存中,然后折半查找快速定位

常用存储引擎:有mylsam和innodb

mylsam:非聚集,数据文件分为三种,frm(存放表结构)、索引文件(存放索引)、数据文件(存放索引),表结构底层存的是数据指针
		查询数据先查询索引文件,获取数据在索引上的存放的磁盘上的地址,再通过地址去数据文件获取对应数据(需要回表操作)
innodb:聚集,数据文件分为两种,frm(存放表结构)、idb(数据&索引),表结构底层存的是数据指针&数据记录
		通过索引文件直接查询数据(当出现二级索引也是需要回表操作)

整型自增主键原因:

若不加,数据库需要从数据中找出一列唯一数据
整型占用空间较小,查询效率也快(相比于如,UUID)



这篇关于Mysql相关笔记整理(自用,有误还请指教)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程