电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

MySQL之索引結構解讀

瀏覽:193日期:2023-05-05 10:11:58
目錄
  • MySQL索引是什么
  • 二叉樹
    • 紅黑樹
    • B+Tree
  • 總結

    MySQL索引是什么

    MySQL索引就是幫助MySQL高效獲取數據的數據結構。

    這個數據結構也就是我們常說的二叉樹、紅黑樹、Hash表等索引數據結構,借助這樣的數據結構,相較于之前的全局遍歷查詢,能夠更高效的進行查詢。

    簡單復習一下一些常見的索引數據結構:

    二叉樹

    上圖是一個二叉樹,他根據我們存放數據的順序依次填充這個樹結構,比根節點小的數放到左邊,比根節點大的放在右邊,這樣我們去查找的時候不需要遍歷所有數據,只需要依次與根節點以及下面的子節點對比就可以查找到我們要找的元素。

    查找流程示例圖:

    根據這個動態圖左上角的比對信息,可以很清楚的看到二叉樹的查詢邏輯,感興趣的可以去這個網址實際模擬下:Data Structure Visualization

    但是上述查詢邏輯是在數據無大小規律存儲的情況下進行查詢的,如果我們的數據按照大小順序存儲會出現以下情況:這其實雖然叫二叉樹但實際上已經是鏈表結構了,假如我們要查詢較為底層的數據,還是要遍歷全局。

    MySQL底層不是使用的二叉樹結構。

    紅黑樹

    相較于上述的二叉樹,紅黑樹做了相應的優化,他會根據存儲的數據動態調整根節點保證樹左右兩邊的平衡,紅黑樹也是一種平衡樹。

    下面來動態的看下他是如何存儲數據的:

    可以明顯的看到他動態調整樹的結構,其實也就是減少了樹的深度,相較于上面變為鏈式的二叉樹,他的效率還是較高的,但是這僅僅適用于數據量不是很大的情況,如果數據量百萬甚至千萬,這個樹的深度一樣很深,查詢起來效率依舊不高。所以MySQL底層也不是使用的紅黑樹結構。

    那MySQL使用的那種數據結構來存儲索引數據的呢?

    B+Tree

    MySQL底層其實是使用的B+Tree的數據結構存儲的

    這個結構相對于上述兩種結構都有點復雜了,用更詳細一點的圖來表達可以這么看,他實際上還是樹,但是一個樹節點上不只有一個索引數據,只有最底層的葉子節點上才有數據(這個數據就是我們mysql表中的一列數據或者是mysql數據對應的磁盤地址),而其他節點只存儲索引,也叫作冗余索引。

    這樣的索引結構有什么好處呢?

    在我們創建數據庫索引的時候,他會自動幫我們建立這樣的B+Tree數據結構,上圖假如我們要查詢30那條數據(select * from table where column = 30),這個column就是我們創建索引的那一列,這樣他會把根節點加載到內存中,根據二分法或者其他方式查找到30對應的區間地址,因為在內存中的查找運算要比查詢磁盤要快的多

    然后相應的再往下找到30所在的區間位置,遍歷最后一個葉子節點就可以獲取到30那條數據

    那如果數據量過大,百萬千萬,樹還會不會變得很深?

    我們說樹的查詢效率取決于樹的深度,那這個在千萬級數據量下會不會還有二叉樹和紅黑樹一樣的問題呢?

    其實沒有了,B+Tree是可以設置樹的最大深度的,我們假設深度設置為3,看看能進行多少量級的數據查詢。

    因為在前面的兩層節點中只存儲了索引數據和子節點的磁盤位置,大大節省了存儲空間,每個節點的存儲大小是由mysql設置的分頁參數決定的:一般是16kb

    ps:頁是InnoDB訪問的最小單位,默認16KB。緩沖池是以頁為管理單位,每次讀取或刷新一頁數據。參數: innodb_page_size,可以將頁大小設置為4K,8K.

    SHOW GLOBAL STATUS LIKE "Innodb_page_size";

    而一個索引數據假設我們用的bigInt占用8個字節,兩個索引元素之間的空間是下個節點的磁盤空間地址,占用6個字節,也就是一個索引+節點地址占用14b,那么16kb的空間可以存儲數據量是1170個索引,同理第二個層級的每個節點是也是可以存儲1170個索引,最后一層也就是第三層的節點因為存儲的是實際每一列的數據,假設每列數據占用1kb,那每個節點占存儲16個索引數據。

    整個樹的數據存儲量為1170*1170*16=21,902,400,是個兩千萬量級的數據量。完全滿足大數據量的需求。

    總結

    以上為個人經驗,希望能給大家一個參考,也希望大家多多支持。

    標簽: MySQL
    相關文章:
    主站蜘蛛池模板: 聚氨酯催化剂K15,延迟催化剂SA-1,叔胺延迟催化剂,DBU,二甲基哌嗪,催化剂TMR-2,-聚氨酯催化剂生产厂家 | 众品地板网-地板品牌招商_地板装修设计_地板门户的首选网络媒体。 | 上海租奔驰_上海租商务车_上海租车网-矢昂汽车服务公司 | 深圳善跑体育产业集团有限公司_塑胶跑道_人造草坪_运动木地板 | 成都热收缩包装机_袖口式膜包机_高速塑封机价格_全自动封切机器_大型套膜机厂家 | 深圳美安可自动化设备有限公司,喷码机,定制喷码机,二维码喷码机,深圳喷码机,纸箱喷码机,东莞喷码机 UV喷码机,日期喷码机,鸡蛋喷码机,管芯喷码机,管内壁喷码机,喷码机厂家 | 河南膏药贴牌-膏药代加工-膏药oem厂家-洛阳今世康医药科技有限公司 | 原色会计-合肥注册公司_合肥代理记账公司_营业执照代办 | 铣刨料沥青破碎机-沥青再生料设备-RAP热再生混合料破碎筛分设备 -江苏锡宝重工 | 数控专用机床,专用机床,自动线,组合机床,动力头,自动化加工生产线,江苏海鑫机床有限公司 | CTP磁天平|小电容测量仪|阴阳极极化_双液系沸点测定仪|dsj电渗实验装置-南京桑力电子设备厂 | 本安接线盒-本安电路用接线盒-本安分线盒-矿用电话接线盒-JHH生产厂家-宁波龙亿电子科技有限公司 | 耐高温硅酸铝板-硅酸铝棉保温施工|亿欧建设工程 | 马尔表面粗糙度仪-MAHR-T500Hommel-Mitutoyo粗糙度仪-笃挚仪器 | 重庆网站建设,重庆网站设计,重庆网站制作,重庆seo,重庆做网站,重庆seo,重庆公众号运营,重庆小程序开发 | 扒渣机厂家_扒渣机价格_矿用扒渣机_铣挖机_撬毛台车_襄阳永力通扒渣机公司 | 广州办公室设计,办公室装修,写字楼设计,办公室装修公司_德科 | 集装箱标准养护室-集装箱移动式养护室-广州璟业试验仪器有限公司 | 宠物店加盟_宠物连锁店_开宠物店-【派多格宠物】 | 全自动包装秤_全自动上袋机_全自动套袋机_高位码垛机_全自动包装码垛系统生产线-三维汉界机器(山东)股份有限公司 | 电位器_轻触开关_USB连接器_广东精密龙电子科技有限公司 | 沈阳建筑设计公司_加固改造设计_厂房设计_设计资质加盟【金辉设计】 | 东莞市超赞电子科技有限公司 全系列直插/贴片铝电解电容,电解电容,电容器 | 厂厂乐-汇聚海量采购信息的B2B微营销平台-厂厂乐官网 | 艺术涂料_进口艺术涂料_艺术涂料加盟_艺术涂料十大品牌 -英国蒙太奇艺术涂料 | 楼梯定制_楼梯设计施工厂家_楼梯扶手安装制作-北京凌步楼梯 | 钢格栅板_钢格板网_格栅板-做专业的热镀锌钢格栅板厂家-安平县迎瑞丝网制造有限公司 | 电机铸铝配件_汽车压铸铝合金件_发动机压铸件_青岛颖圣赫机械有限公司 | 动库网动库商城-体育用品专卖店:羽毛球,乒乓球拍,网球,户外装备,运动鞋,运动包,运动服饰专卖店-正品运动品网上商城动库商城网 - 动库商城 | 槽钢冲孔机,槽钢三面冲,带钢冲孔机-山东兴田阳光智能装备股份有限公司 | Trimos测长机_测高仪_TESA_mahr,WYLER水平仪,PWB对刀仪-德瑞华测量技术(苏州)有限公司 | 会议会展活动拍摄_年会庆典演出跟拍_摄影摄像直播-艾木传媒 | 交流伺服电机|直流伺服|伺服驱动器|伺服电机-深圳市华科星电气有限公司 | 深圳市索富通实业有限公司-可燃气体报警器 | 可燃气体探测器 | 气体检测仪 | 水冷式工业冷水机组_风冷式工业冷水机_水冷螺杆冷冻机组-深圳市普威机械设备有限公司 | NM-02立式吸污机_ZHCS-02软轴刷_二合一吸刷软轴刷-厦门地坤科技有限公司 | 昆明网络公司|云南网络公司|昆明网站建设公司|昆明网页设计|云南网站制作|新媒体运营公司|APP开发|小程序研发|尽在昆明奥远科技有限公司 | 儋州在线-儋州招聘找工作、找房子、找对象,儋州综合生活信息门户! | DWS物流设备_扫码称重量方一体机_快递包裹分拣机_广东高臻智能装备有限公司 | 高压微雾加湿器_工业加湿器_温室喷雾-昌润空气净化设备 | 专业甜品培训学校_广东糖水培训_奶茶培训_特色小吃培训_广州烘趣甜品培训机构 |