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

本文探讨了数据库索引的数据结构选择,解释了为何MySQL通常使用B+树作为索引结构,因为它能有效降低磁盘IO次数。同时,对比了B树、二叉树和Hash索引的优缺点。文章还介绍了MyISAM和InnoDB两种存储引擎的差异,MyISAM是非聚集索引,而InnoDB是聚集索引,各有其适用场景。最后,强调了整型自增主键的重要性,因其占用空间小且查询效率高。
摘要由CSDN通过智能技术生成

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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值