最新要闻
- 热头条丨Redmi K20 Pro钉子户三年多不换机:就等卢伟冰发K60
- 最强性能旗舰!一加11配置公布:二代骁龙8、直接12GB+256GB起步
- 速读:QQ音乐iOS版12.0版发布:新增“臻品母带” 无损音质升级
- “灵魂”没了!育碧确认《刺客信条:英灵殿》Steam版将无成就系统
- 天天观速讯丨美版《西游记》剧照公布:吴彦祖悟空、杨紫琼观音亮相
- 赛尔号动画片的结局是什么?赛尔号动画片精灵实力排名
- 流浪地球小说结局是什么?流浪地球小说经典语录
- 二极管如何判断正负极?二极管工作原理
- 每日速看!网约车司机一路刷抖音吓坏女乘客 司机:投诉去吧 无所谓的
- 天天快资讯:因收购动视暴雪 微软被美国十名玩家集体诉讼
- 天天视讯!气场百万 比亚迪仰望高端越野车预告:L形尾灯头次见
- 【独家】OPPO部分旗舰能升级到Android 17:国产手机独此一家
- 4090也秒怂!东北网友晒NV RTX 3070显卡温度:这效果我服!
- 大众ID.Xtreme概念车曝光:旗下最野性的电动车
- 当前快讯:员工漏打卡11次被辞 法院判决:公司赔大发了
- “兔圆圆”!2023年总台春晚标识和吉祥物官宣 附春晚节目单
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
全球快看点丨MySQL-带你上官网看索引
在我之前的一篇文章中,有引用一个讨论用Hash还是Tree的问题,DB中关于查找类数据结构,除了树,还有Hash(HashMap,HashSet)。
存储数据结构之争
(资料图片仅供参考)
B+树主要是照顾磁盘IO这种特殊的性质应运而生的;然而在内存够多够大时,Hash某些时候比Tree结构有用得多。
但是Hash做索引的缺点也非常明显:
1,Hash冲突造成的散列不均匀,线性查找浪费时间;
2,不支持范围查询,避免不了全表扫描;
3,内存空间要求高。
MySQL中,InnoDB和MyISAM默认的索引是B+ Tree索引;Memory则同时支持Hash和Tree索引(可在创建时直接指定使用何种索引,具体移步)。
同时,Memory这种存储引擎“断电即毁”的特性也不再推荐使用。
B树和B+树之争
前置知识:知道mysql中索引即数据,数据即索引(页的存储结构);知道为何采用B树(多路平衡查找树),知道为何实际采用了B+树。
1,B+树空间利用率更高。B+树只在叶子节点存储实际数据,非叶子节点,B+树有了更多的空间存储索引,这样B+树越靠近矮胖,IO减少,
磁盘读写代价低,检索效率变高。
2,B+树查询效率更稳定。B+树的检索,任何检索路径都需要从根节点到叶子节点(只有叶子节点有数据),时间复杂度固定在O(LogN);
B树则在O(1)和O(LogN)之间。即二分查找。
3,B+树范围查询性能更优。 B+树的叶子节点使用了双向链表连接在一起,而且是严格的顺序存储,从左到右从小到大。
4,B+树由于叶子节点使用了链表进行串联,除了支持随机检索,还支持顺序检索。
一些常见概念
回表: 查询计划不是使用主键索引,即通过二级索引查找目标;而二级索引的B+树只存储了主键数据(索引列,主键),
如仍需要其它数据,需要再次根据主键去主键索引所在B+树查找一次数据的过程,即回表。
回表引发的问题:某些情况,使用了索引,但仍然触发了全表扫描(explain type="All")。因为此时查询优化器对比了回表IO次数和全表扫描的IO次数,选择了全表扫描。
MRR:MRR全称:Multi-Range Read Optimization(多范围读取优化),动机是减少随机磁盘访问的次数,实现对基表数据的更顺序扫描。
官网的解释在这。即把随机磁盘读转化为顺序磁盘读,提高查询性能(磁头运动&磁盘预读)。本质在做一件以空间换时间的事情。
下面这个图很形象借用一下:(红线表示查询路线,蓝线表示磁盘/磁头运动路线)
未开启MRR:
开启MRR:
上面的图来自文章MySQL的MRR到底是什么?
以空间换时间,这个空间指的是内存,内存大小设置在系统变量read_rnd_buffer_size,设置请参考官网。
使用SQL命令:SELECT @@optimizer_switch
查看MRR是否已开启(默认开启)
索引覆盖:查询目标可直接从叶子节点获取数据,不需要回表,即为索引覆盖。
如下图:country_id是二级索引,查找目标刚好只查询主键索引和二级索引键值本身,直接使用二级索引的B+树就能查到。不需要回表,称为索引覆盖。
最左匹配原则(多列索引): 官网的解释在这里。
举例:
有组合索引信息如下:
则验证的关键原则是:
-- 最左匹配原则要点:-- 1,组合索引第一列(最左)作为第一个条件,只有接or不走索引,其它情况全部走索引;-- 2,不以最左作为第一个条件,一般都不会走索引,唯有把组合索引条件都加上才会走(内部优化)。explain select * from staff where first_name="Mike"; -- yesexplain select * from staff where last_name="Hillyer"; -- noexplain select * from staff where first_name="Mike" and last_name="Hillyer"; -- yesexplain select * from staff where last_name="Hillyer" and first_name="Mike"; -- yes(内部优化)explain select * from staff where first_name="Mike" or last_name="Hillyer"; -- noexplain select * from staff where first_name="Mike" and(last_name="Hillyer" or last_name=""); -- yes
索引(条件)下推:即ICP,全称是Index Condition Pushdown Optimization,官网的解释在这里。我们一般叫索引下推,其实正式应该称为:索引条件下推。
怎么理解?下推什么呢? 顾名思义,Condition Pushdown,把查询条件往下推。官网的这句:
With ICP enabled, ... , the MySQL server pushes this part of theWHERE
condition down to the storage engine.
翻译即是:ICP启用后,把where条件的部分从server层下推到storage engine层。
需要先了解MySQL的大概架构:
就是,原来where条件筛选在Server层这里,现在下推到存储引擎层去。
举例:
下表中,id是主键,name,age是联合索引。
查找姓张且年龄是10岁的记录:select * from tuser where name like "张%" and age=10;
没有使用ICP:二级索引找到主键1和4,分别回表去查找对应的完整记录,Server层再根据where条件的age=10进行筛选。这个过程要回表两次。
使用ICP: 二级索引找到主键1和4,存储引擎层(Server的下层)根据联合索引where条件age=10进行筛选。根据筛选结果再回表查到完整记录。这个过程回表1次。
上面的ICP举例和图片出自这里。
使用执行计划分析时,使用索引下推在Extra栏位会出现:Using index condition信息,具体参见。
MySQL默认启用索引(条件)下推。系统设置变量为:index_condition_pushdown
避免全表扫描:官网的解释在这里。
使用查询计划分析时,对于大型表,应尽力避免type=All的情况。 表扫描非常昂贵。
本文阅读MySQL文档为5.7。
下一篇继续探索索引优化部分。
全球快看点丨MySQL-带你上官网看索引
天天简讯:图算法、图数据库在风控场景的应用
热头条丨Redmi K20 Pro钉子户三年多不换机:就等卢伟冰发K60
最强性能旗舰!一加11配置公布:二代骁龙8、直接12GB+256GB起步
速读:QQ音乐iOS版12.0版发布:新增“臻品母带” 无损音质升级
“灵魂”没了!育碧确认《刺客信条:英灵殿》Steam版将无成就系统
天天观速讯丨美版《西游记》剧照公布:吴彦祖悟空、杨紫琼观音亮相
赛尔号动画片的结局是什么?赛尔号动画片精灵实力排名
流浪地球小说结局是什么?流浪地球小说经典语录
二极管如何判断正负极?二极管工作原理
世界快消息!Visual Studio Code 安装教程
Redis集群的三种方式详解(附优缺点及原理区别)
全球即时:echarts设置单位的偏移
每日速看!网约车司机一路刷抖音吓坏女乘客 司机:投诉去吧 无所谓的
天天快资讯:因收购动视暴雪 微软被美国十名玩家集体诉讼
天天视讯!气场百万 比亚迪仰望高端越野车预告:L形尾灯头次见
【独家】OPPO部分旗舰能升级到Android 17:国产手机独此一家
TCP套接字
全球即时:认证管理(锐捷无线篇)
热资讯!基于 Dubbo-Admin 实现根据请求条件路由
最新快讯!教你用Java实现动态调色板
4090也秒怂!东北网友晒NV RTX 3070显卡温度:这效果我服!
大众ID.Xtreme概念车曝光:旗下最野性的电动车
当前快讯:员工漏打卡11次被辞 法院判决:公司赔大发了
“兔圆圆”!2023年总台春晚标识和吉祥物官宣 附春晚节目单
每日速讯:网易MOBA游戏《无尽战区》宣布复活!曾于两年前停运
世界快看点丨Spring Cloud 2022 正式发布!我的天,OpenFeign 要退出历史舞台了?!
焦点快播:君子不玩物丧志,亦常以借物调心,网站集成二次元网页小组件(widget)石蒜模拟器,聊以赏玩
天天播报:让人诧异!浙江台州天上突然飘落大量羽毛:宛如鹅毛大雪
环球热文:美国动物园将归还大熊猫丫丫和乐乐 结束20年租期:曾被质疑虐待国宝
除了蔚来:大多数车企都给黑客赎金了
全球看热讯:韩国刷新世界最低生育率纪录 上学人减半:日本欧洲更慌了
天天速看:性能超RX7900 XTX!RTX 4070/4070 Ti确定:这售价给老黄买单?
焦点速读:世界最慢的PC诞生 单核跑分不到13900K的百分之一
跟着TDP配电源怎么就蓝屏了?原因揭开
环球新消息丨vue-router
每日速讯:i9-13900K史上第一次超到9GHz!液氦、零下250度
今日快讯:核显笔记本也能跑50帧夜之城!AMD这次干的好啊
环球最资讯丨RTX 40笔记本显卡全线泄露:第一次xx90、功耗达175W
【世界快播报】Intel官方“意外”走光6GHz i9-13900KS:基础功耗150W
60万粉丝女网红偷平价睡衣被抓:真相大跌眼镜
全球时讯:《泰坦尼克号》的世纪疑问 卡梅隆终于解答了:杰克和露丝没法一块活下来
2023年北美最受期待的10大电影来了
当前焦点!FreeSWITCH学习笔记:日志
每日聚焦:官方公布长征九号重型火箭!运力150吨、2030年左右首飞
【环球快播报】太阳的“脾气”突然变了!日益活跃起来:科学家们感到紧张
每日看点!央视科普:黄河源头是巴掌大的小泉眼!反差感十足
天天快播:普通人或者门外汉该怎样入门编程?
洛谷 P5401 [CTS 2019] 珍珠 题解
红魔8 Pro拥有最震撼屏占比:边框比iPhone 14 Pro更窄
世界首富也扛不住!特斯拉被曝暂停招聘 下季度新一波裁员
真卖不动了 2022年全球电视出货量仅2.02亿台:创十年新低
当前要闻:12306出现北京直达香港高铁 网友火速围观:官方客服回应
热推荐:北京多地下雪你看到没?62条公交线路临时有变
关注:充电式加热羽绒服突然火了 又一“韭菜收割机”问世?
全球观热点:一日痛失两位院士!稀土冶金专家张国成、激光技术专家赵伊君逝世
快播:只有《流浪地球2》才适合中国观众?《阿凡达2》全球票房一览:国人贡献第二
每日短讯:不止LCD 大尺寸OLED面板也跌了
今日热文:很多人非常关心Redmi K60 卢伟冰:我再打磨会
每日讯息!今日内容 docker-compose部署项目
【热闻】《三体》《流浪地球》后 刘慈欣另三部科幻著作影视化立项
女童拿氢气球烤火突发爆燃 消防试验爆燃威力
腾讯新专利发布:人脸识别安全性稳了
化身“充电刺客”也难掩颓势!共享充电宝第一股怪兽充电一年亏损超4个亿
每日头条!20款前端特效及部分代码
别再浪费钱 这三款买完就吃灰的数码产品要避开
环球通讯!十二天线旗舰猛兽!小米万兆路由图赏
即时:数据被窃遭“天价”勒索!蔚来卢龙:不影响车辆驾乘
全球资讯:网红撒盐哥硬拉梅西合照遭网暴 网友吐槽:不礼貌、纯蹭热度
【焦点热闻】罗永浩:我很高兴得到了“亡命徒”的评价
环球速递!.NET Core如何通过认证机制访问Kafka?
今日看点:正则表达式?!的理解
环球滚动:配置Git客户端上传代码至Gitlab仓库
5-38℃智能温控:美菱踢脚线取暖器79元起大促
世界球精选!10999元!女子苹果店新买iPad无法充电后换机:更杯具了 竟无法开机
天天快资讯:离谱!我花1万多买MacBook Pro 居然送来了这种东西
暴涨300%以上!P社宣布上调阿根廷等区域游戏价格
全球焦点!你的城市在列吗?2022中国最具幸福感10大城市出炉:第一成都14连冠
CMU15-445:Lecture #01 笔记
比亚迪单周破5万、特斯拉后劲不足:2022年车市最后时刻迎“小高潮”
曾推出过两代产品!曝Redmi K系列电竞版没了
焦点!官方科普铁路新规:身高不再是儿童购票唯一标准
世界微速讯:吸金34亿元!《阿凡达2》升至全球票房榜第9 紧追《长津湖之水门桥》
今日热文:与一加11同时发布!一加Buds Pro 2真无线降噪耳机来了
资讯:一颗红心,三手准备,分别基于图片(img)/SCSS(样式)/SVG动画实现动态拉轰的点赞按钮特效
一篇文章彻底明白java中的重要概念——注解
环球新消息丨【源码透视】SpringBoot的SPI机制
快播:火山引擎 DataTester 为企业降本增效:1 个人也能成为一支 A/B 实验团队
Netty-介绍-1
天天有喜大结局是什么?天天有喜演员表
Mybatis批量插入3种方法
蜜糖三部曲是哪部电视剧?蜜糖三部曲有什么关系?
华约自主招生是什么意思?华约自主招生考试笔试经验
如何用环保袋制作衣服?用环保袋制作衣服的方法有哪些?
全球资讯:青龙面板之淘宝
当前热点-彩虹女神跃长空,Go语言进阶之Go语言高性能Web框架Iris项目实战-JWT和中间件(Middleware)的使用EP07
全球资讯:数智赋能:透过低代码看企业如何实现数智转型
速读:基于 Dubbo Admin 实现流量灰度
女医明妃传原型是谁?女医明妃传演员表
冒险岛怎么删除角色?冒险岛怎么提升面板?