全球快讯:Mysql高可用高性能存储应用系列1 - 索引篇
概述
在整个计算机运行系统里,Cpu,内存,和磁盘主要的性能瓶颈是卡在了读取数据中,Mysql索引的优化主要在减少磁盘I/O操作中,这篇博客中详细讲解了二叉树结构,以及BTree作为Mysql索引结构的根本原理,文章底部留下来几个常用的问题。
索引的本质
是帮助mysql高校获取数据的数据结构在mysql中,数据最终存储在硬盘中访问磁盘相当于是I/O操作,Mysql中有一个页(page)的概念,一个page就是树中的一个节点,每次Mysql就会取出一个page也就是一个节点的数据,而mysql默认一个page保存16k的数据。
(资料图)
二叉树
二叉树定义:
左子树的所有值都小于根节点右子树的所有值都大于根节点每个根节点最多分裂出两个子节点平衡二叉树定义:
相对平衡,左右两个子树的深度差 绝对值不能超过1左右两个子树也必须是平衡二叉树可以避免二叉树的极端情况B-Tree结构
特点:多叉(多阶)
1个节点可以存储查过2个元素,可以拥有超过2个子节点拥有二叉树的一些性质平衡,每个节点的所有子树高度一致,比较矮元素个数计算:
已知条件:m阶B树,最多拥有m个子节点,假设一个节点的存储元素个数为x。
根节点计算公式:1 <= x < m-1非根节点(向上取整) ,计算公式:m/2 <= x <= m-1子节点个数:y = x + 1,根节点计算公式:2 <= y <= m非根节点(向上取整) ,计算公式:m/2 <= y <= m每个节点最多有m个子节点除根节点外,每个节点至少有m/2个子节点,注意如果结果除不尽,就向上取整根节点要么为空,要么就独根,否则至少有2个子节点有K个子节点的节点必有k个关键词,就是有m个数据就有m个叉叶节点的高度一致单个节点可以保存多个数据,一次page可以获取更多的有效数据,同时因为分叉增多,数据层级肯定会更小,查询次数就会减少。
一个3层的Btree可以保存多少条数据呢?假设一条数据占用1k的空间(它的标识先可以忽略不计),3层的B-tree结构保存的数据条数:
16 * 16 * 16 = 4096假如一个表中有500w数据,层级还是会很深,这样查询数据的时候,磁盘I/O还是会很多,(2)数据从小到大依次分布在树的不同层级中,进行范围查找时,获取范围越大,获取的节点就越多,极端情况下所有的数据全部遍历一遍,相当于遍历了整颗树,节点越多,I/O操作就会越多,性能就会卡主。
B+Tree
B+Tree解决了B-Tree结构存在的问题。
叶子节点保存数据信息,非叶子节点不保存节点保存的元素树等于m,并且是左闭右开叶子节点通过指针链接,方便范围查找,只需遍历叶子节点为什么Mysql使用B+Tree,而不使用B-Tree呢?叶子节点基于索引排序更优,非叶子节点不保存数据,保存索引数据更多,一次I/O获取更多的目标数据。最底层的数据结构属于双向链表,在做排序或者是范围查找的时候就会很方便,它不用遍历上面的节点。
Mysql具体如何使用
Myisam
*.frm 数据表的定义信息
*.myi 保存索引的信息
*.myd 保存数据文件
Innodb
*.frm 数据表的定义信息
*.ibd 保存了索引信息和数据信息
在Innodb引擎下,如果表没有创建主键索引,数据表会自动创建主键索引。
回表
回表,顾名思义就是回到表中,也就是先通过普通索引(我们自己建的索引不管是单列索引还是联合索引,都称为普通索引)扫描出数据所在的行,再通过行主键ID 取出索引中未包含的数据。所以回表的产生也是需要一定条件的,如果一次索引查询就能获得所有的select 记录就不需要回表,如果select 所需获得列中有其他的非索引列,就会发生回表动作。即基于非主键索引的查询需要多扫描一棵索引树。
Mysql回表指的是在InnoDB存储引擎下,二级索引查询到的索引列,如果需要查找所有列的数据,则需要到主键索引里面去取出数据。这个过程就称为回表。
有Id,Name,Age等等字段,Id和Name是索引,如果使用select Id,Name from Table在索引项就直接返回了,如果使用select * from Table当查询其他字段时就需要使用主键索引去获取数据,产生了多余的回表操作。
覆盖索引:可以考虑将查询的列创建组合索引,避免回表。
索引最左匹配原则
假如创建了name,age,address的索引,B+Tree结构是严格按照索引顺序去执行。
//使用到索引了Select * from user where name = ? AND age = ? AND address = ? //使用到索引了Select * from user where name = ?//使用到了索引但是只用到name的索引了Select * from user where name = ? AND address = ? mysql索引面试题
1.mysql为什么不用二叉搜索树和平衡二叉树?
二叉搜索树相当于一个链表,极端情况,查询最后一条数据会遍历整个表,mysql每个节点的操作就是对磁盘的一个I/O操作,而平衡二叉树虽然避免了极端情况,但是一个节点只能保存一个元素,这样就会导致每一个节点保存的数据比较少,I/O操作增多,影响性能。
2.mysql为什么用B+tree,不用B-Tree?
1)叶子节点有指针关联,当进行排序和范围查找时,效率也会更高,它不会查询所有的节点,这样基于索引的扫表就会更优,基于索引的排序也会更优。
2)子节点中不保存数据信息,只保存标识信息和指针信息,这样在同一个page结构中保存的数据就会更多,减少磁盘I/O。
3.mysql为什么不选择使用B-Tree?
根据计算,3层的B-Tree树保存的数据还是很少,数据从小到大依次分布在数的不同层级中,进行范围查找时,获取范围越大,获取的节点就越多。
极端情况下,相当于遍历了整棵树,节点越多获取的次数就越多,I/O操作就会越多,这样性能就会遇到瓶颈。
4.mysql为什么不建议用uuid当主键?
5.为什么建议主键ID是递增的,和B+Tree有什么关系?
1) 因为B+Tree在创建索引是按照顺序从小到大创建的,并且把相临的节点放置在同一个page中,保证一个page的充分利用,减少分叉(也就是减少了检索次数)。
2) UUid是没有任何规律的,造成了Page的浪费,Btree会因为存储结构不合理,导致节点增多,所以不会用UUid当主键。
6.为什么不建议使用select * from Table语句查询数据?
有Id,Name,Age等等字段,Id和Name是索引,如果使用select Id,Name from Table在索引项就直接返回了,如果使用select * from Table当查询其他字段时就需要使用主键索引去获取数据,产生了多余的回表操作。
7.为什么Innodb引擎要求一定要建立主键索引?
这是由Innodb特殊引擎结构决定的,Innodb引擎数据存储在主键ID下面
8.索引最左匹配原则
假如创建了name,age,address的索引,B+Tree结构是严格按照索引顺序去执行。
//使用到索引了Select * from user where name = ? AND age = ? AND address = ? //使用到索引了Select * from user where name = ?//使用到了索引但是只用到name的索引了Select * from user where name = ? AND address = ? 标签:
-
2022-02-07 14:57:45
奇迹!绝杀!女足亚洲杯逆转夺冠!<
刚刚,中国女足上演逆转绝杀奇迹!她们在亚洲杯决赛中3:2力克韩国队,时隔16年再夺亚洲杯冠军!
-
2022-02-07 14:57:45
中国政府与阿根廷共和国政府签署共建“一带一路”谅解备忘录<
新华社北京2月6日电(记者安蓓)国家发展改革委6日称,国家发展改革委主任何立峰与阿根廷外交、国际贸易和宗教事
-
2022-02-07 14:57:43
中华人民共和国和阿根廷共和国关于深化中阿全面战略伙伴关系的联合声明(全文)<
新华社北京2月6日电中华人民共和国和阿根廷共和国关于深化中阿全面战略伙伴关系的联合声明一、应中方邀请,阿根廷
-
2022-02-07 14:57:40
春节假期国内旅游出游2.51亿人次<
春节遇冬奥,旅游年味浓。根据文化和旅游部数据中心测算,2022年春节假期7天,全国国内旅游出游2 51亿人次,同比
-
2022-02-07 14:57:40
中吉签署关于经典著作互译出版的备忘录 开启两国人文交流互鉴新阶段<
新华社北京2月6日电(记者史竞男)国家主席习近平6日会见来华出席北京2022年冬奥会开幕式的吉尔吉斯斯坦总统扎帕
-
2023-03-22 09:01:41
全球快讯:Mysql高可用高性能存储应用系列1 - 索引篇
在整个计算机运行系统里,Cpu,内存,和磁盘主要的性能瓶颈是卡在了读取数据中,Mysql索引的优化主要在减少磁盘I O操作中,这篇博客中详细讲解
-
2023-03-22 06:45:08
动态:手掌小鱼际中间位置按压疼_手掌小鱼际疼怎么回事
1、掌侧大鱼际位置疼痛的具体原因:一、会考虑大鱼际肌痉挛和大鱼际肌劳损。2、有可能抓握,也就是过度收缩,与大鱼际肌的损伤
-
2023-03-22 01:59:11
【环球热闻】暖水袋怎么换里面的水 暖水袋
1、在寒冷的冬天,使用热水袋时应注意以下事项:1.盖子下端的橡皮垫圈,是保证热水袋不漏水的重要部件。2、倒水时不要把橡皮
-
2023-03-21 22:16:58
今日报丨南充:学校周边发现三无“捏捏乐”玩具被责令下架
南充:学校周边发现三无“捏捏乐”玩具被责令下架
-
2023-03-21 19:42:43
12岁男孩看短视频学做火药被炸伤事件简单介绍-天天新消息
1、3月18日,有网友爆料称,读初一的表侄子在网上购买化学物品,学习某短视频平台上他人制作火药的视频被炸伤。2、孩子表叔
-
2023-03-21 17:22:53
天天热讯:“交相生养”
作者:黄纯艳(华东师范大学历史学系教授,中国海外交通史研究会副会长、中国中外关系史学会副会长)宋代是中国古代经济发展的一
-
2023-03-21 15:39:07
科普|老年心血管病患者如何应对甲流?-新消息
冬春交替,气温变化大,老年心血管病患者除了要应对季节变化对心血管造成的影响,还要面对甲流的传播,那么老年心血管病患者们究竟应该如何做
-
2023-03-21 13:25:05
2022年中国研发经费投入首次突破3万亿元大关
中新社大连3月21日电(记者杨毅)大连理工大学科技创新创业与产业转型研究中心21日对外发布《中国研发经费报告(2022)》称,2022年中国研发经费投入达3
-
2023-03-21 11:13:17
迪士尼在苏州开设欢乐屋 为江苏第五个落成的欢乐屋
项目落成后面向儿童开展游戏治疗、音乐教室、绘本阅读、影音视听等活动,助力患儿配合治疗。
-
2023-03-21 09:38:58
天天微资讯!【期货资讯一周集萃-棉花】宏观风险加剧,郑棉下方空间有限
【一周集萃-棉花】 宏观风险加剧,郑棉下方空间有限 摘要: 行情回顾 国际银行风险蔓延,市场信心严重受挫。美棉跌破80美分 磅,郑
-
2023-03-21 07:10:12
热头条丨今天春分,早晨至上午有轻雾,能见度低,最高气温19℃
今天春分,早晨至上午有轻雾,能见度低,最高气温19℃
-
2023-03-21 02:57:51
实习标志标准尺寸_实习标志打印
1、在日常生活中,实习标签我们经常遇到,尤其是一些刚入手的新车上,车身贴的有实习标志。2、实习标签的种类也有很多,这里以
-
2023-03-20 22:11:40
这次重要访问,要对美西方说四个“不”
刚刚,中国最高领导人抵达俄罗斯首都莫斯科。明知西方国家会拿这次访问做文章,对华开展新一波舆论攻势,但咱们领导人还是去了。这是为什么?
-
2023-03-20 19:48:51
13幺视频_13幺
你们好,最近小活发现有诸多的小伙伴们对于13幺视频,13幺这个问题都颇为感兴趣的,今天小活为大家梳理了下,一起往下看看吧
-
2023-03-20 17:25:41
中国第18期援圭亚那医疗队为圭监狱人员开展健康体检
新华社加拉加斯3月19日电(记者徐烨王瑛)乔治敦消息:受圭亚那内政部长罗伯逊·本邀请,中国第18期援圭医疗队18日走进
-
2023-03-20 15:36:49
世界今日讯!上声电子(688533)3月20日主力资金净卖出2571.34万元
截至2023年3月20日收盘,上声电子(688533)报收于43 0元,下跌3 31%,换手率8 11%,成交量3 15万手,成交额1 37亿元。
-
2023-03-20 13:13:35
环球动态:网易游戏调整海外发行商 Exptional Global新品牌首次亮相
中国证券网讯(记者罗茂林)日前,网易旗下多款热门游戏在海外的发行商发生变化,由原本的NeteaseGlobal变成了ExptionalGlobal,这也是网易旗下E
-
2023-03-20 11:07:16
孩子有这些表现,说明他感统失调,12岁前应尽早干预
孩子有这些表现,说明他感统失调,12岁前应尽早干预,前庭,统合,平衡感,大脑发育,感统失调,宝宝智力
-
2023-03-20 09:18:56
怀化:红色文化激励青年成才 天天视讯
本报讯(记者肖江浩通讯员蒋秀德)国家税务总局怀化市税务局最近开展“追寻红色·激励青色·奋进蓝色”青年理论学习优秀成果展示评选活动,...
-
2023-03-20 06:46:17
店长推荐儿媳是大学美女老师一双玉腿让我无法自拔 重点聚焦
1、大学老师儿媳妇周学颖,小说作者是谁?作者我也不知道,没看过这比小说。2、那你知道你就告诉我呗,我也不知道他做主是谁,
-
2023-03-20 01:17:06
星爵的父亲是天神组吗_星爵的父亲-世界速读
1、《银河护卫队2》中星爵的父亲是一颗星球,有自我意识。2、在电影里,伊戈自称自己是天神族,奥丁是众神之父,听起来很霸气
-
2023-03-19 20:48:09
五代十国电视剧大全_五代十国电视剧全集 每日热门
1、1《情剑山河》是潘文杰、张健伟、浦腾晋联合执导的以五代十国为背景的历史爱情电视剧。2、该剧讲述南唐后主李煜与宋太祖皇
-
2023-03-19 17:18:56
文雅有内涵的词语_文雅有内涵的网名?
1、1无情的主角2、2,3、3知音伯乐4、4惨败的感觉5、5在爱中成长6、6那种感觉已经忘记了。7、七分清歌和风8、8
-
2023-03-19 13:49:13
安徽铜官山铜矿床组合特征及成因探讨-全球快播
1、《安徽铜官山铜矿床组合特征及成因探讨》是由中国地质大学(北京)担任第一完成单位。2、由朱上庆、黄盛华、师其政、崔
-
2023-03-19 10:12:22
环球动态:楚辞今注
1、此书以宋代洪兴祖《楚辞补注》为底本重新作注,特点在于注释简明扼要,疏解融会贯通。2、它不仅使二千年前屈宋鸿裁及两
-
2023-03-19 06:55:40
接收短信验证码平台全新电话号_手机号接收短信验证码平台
1、选择短信验证码平台要注意这几点:短信验证码接受速度要在3s左右,避免用户流失2、到达率需要99%左右3、服务稳定,可
-
2023-03-19 01:04:33
女子养生馆做什么的_女子养生馆是不是鸭店-每日精选
1、SPA项目: 美白保湿护理清爽控油护理 娇兰抗皱护理排毒祛痘护理 柔敏修护护理玫瑰明眸护理 颈色迷人护
-
2023-03-18 21:00:13
明月几时有歌词_明月几时有歌词介绍
解答:1、我们的时代将会到来2、举着我的杯子,我问蓝天3、今晚就在高高的宫殿里。4、今晚是哪一年5、乘着风,我会飞到那里
-
2023-03-18 17:09:11
总结ISO9001体系3字决
如果让你现在用几个关键词来总结质量管理体系,你会想到什么?(一)退有进步就是成功在某些生产工艺中,混料工序是非常关键的一个工序。现在为
-
2023-03-18 13:45:23
河南突降大雪 农户40亩葡萄棚被压塌 希望没有人员受伤! 环球快资讯
河南突降大雪农户40亩葡萄棚被压塌希望没有人员受伤!今天的关注度非常高,直接上了热搜榜,那么具体的是什么情况呢,大家