Java进阶——MySQL索引原理简介

最近因为疫情原因在家待了两个多月了,春节之后对股票特别感冒,然后就花了短时间研究股票,最近市场太过震荡,收益也不是那么理想,反倒公司一直没项目,天天安排请假,在北京那个地方每个月没收入确实不太放心;看这眼前的行情估计和公司说再见不远了;借着总结的时间分享分享博客,希望对看到的朋友们有帮助,也加深下自己的印象。
首先我对性能方面比较热爱,现阶段公司也主要从事相关工作,所以先从我擅长的下手吧。
数据库作为一个系统的最基础最核心模块,在我看来是最为重要的,当然大公司有专门的DBA,我之前在58的时候就遇到过几个DBA的大佬,的确很厉害,我在他们面前简直是班门弄斧了,不过在中小公司,这些方面就得会了,不然很难混的下去,我个人仅对MySQL数据库有过研究,所以我简单分享下我自己MySQL的经验吧;在这里我分享一本之前我在58时候遇到的以为老师,也是我崇拜的大佬之一,沈剑老师分享给我的一本关于MySQL的书籍个人感觉很不错,希望大家受益:从根儿上理解MySQL,以及沈剑老师的个人公众号:架构师之路,好了开始进入正题吧。
1.索引简介
MySQL数据库之所以能够高效查询,索引事关键。在MySQL数据库中不同的存储引擎在具体的实现逻辑上有所差异,但原理都差不多的,这里主要说的是innodb的索引方案。
首先,在数据库中存储是以页为单位的,默认情况下一页的大小是16K,也就是存数据的时候开辟内存空间的时候,先整16K等这存够了,再去开辟新的空间(写书不也一样吗,一篇文章你不会这页写点那页写点吧),一页中可以存储多条数据,根据数据的大小可以容纳的条数也不相同(当然,除了我们需要的数据之外,MySQL系统还会记录很多便于管理的“额外数据”),最终一页数据构成一个data节点,然后有各节点构建一颗B+树,当然MySQL的B+树不是原生的,做了些“本土化”,以便让性能更优。我用一张图大致画下,一棵B+树的结构:
哈哈 我懒的画了 去找了张 从图中我们可以看到:
1.除叶子节点外,不存储实际数据,我叫他目录索引
2.在目录索引中,存储的数据为索引范围对应的小范围目录页或数据页地址
3.叶子节点存储数据(主键索引存整条数据,非主键索引存的是索引列及主键id)
4.所有存储是有序的

【致歉】由于个人初期分享,不太会分享,后期会逐步成长,还请包涵;个人略懂MySQL、tomcat、JVM相关优化,如有需要可以私信itgk_daling@126.com探讨。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值