成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

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

獲取 MySQL innodb B+tree 的高度的方法

瀏覽:372日期:2023-10-10 12:08:01

前言

MySQL 的 innodb 引擎之所以使用 B+tree 來存儲索引,就是想盡量減少數據查詢時磁盤 IO 次數。樹的高度直接影響了查詢的性能。一般樹的高度在 3~4 層較為適宜。數據庫分表的目的也是為了控制樹的高度。那么如何獲取樹的高度呢?下面使用一個示例來說明如何獲取樹的高度。

示例數據準備

建表語句如下:

CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(100) CHARACTER SET latin1 DEFAULT NULL, `age` int(11) DEFAULT NULL, PRIMARY KEY (`id`), KEY `name` (`name`), KEY `age` (`age`)) ENGINE=InnoDB DEFAULT CHARSET=utf8

表中插入100萬條數據。數據如下:

mysql> select * from user limit 2G*************************** 1. row *************************** id: 110000name: ab age: 100*************************** 2. row *************************** id: 110001name: ab age: 1002 rows in set (0.00 sec)

通過查詢相關數據表獲取樹的高度

以 MySQL5.6 版本為例說明如何獲取樹的高度。

首先獲取 page_no

mysql> SELECT b.name, a.name, index_id, type, a.space, a.PAGE_NO FROM information_schema.INNODB_SYS_INDEXES a, information_schema.INNODB_SYS_TABLES b WHERE a.table_id = b.table_id AND a.space <> 0 and b.name=’test/user’;+-----------+---------+----------+------+-------+---------+| name | name | index_id | type | space | PAGE_NO |+-----------+---------+----------+------+-------+---------+| test/user | PRIMARY | 22 | 3 | 6 | 3 || test/user | name | 23 | 0 | 6 | 4 || test/user | age | 24 | 0 | 6 | 5 |+-----------+---------+----------+------+-------+---------+3 rows in set (0.00 sec)

page_no 是索引樹中Root頁的序列號。其它各項的含義可以參照:https://dev.mysql.com/doc/refman/5.6/en/innodb-sys-indexes-table.html

再讀取頁的大小

mysql> show global variables like ’innodb_page_size’;+------------------+-------+| Variable_name | Value |+------------------+-------+| innodb_page_size | 16384 |+------------------+-------+1 row in set (0.00 sec)

最后讀取索引樹的高度

$ hexdump -s 49216 -n 10 ./user.ibd000c040 0200 0000 0000 0000 1600000c04a

可以發現 PAGE_LEVEL 為 0200,表示這棵二級索引樹的高度為 3。后面的 1600 是索引的 index_id 值。十六進制的 16 轉換為十進制數字是 22。這個 22 正好就是上面主鍵的 index_id。上面 hexdump 命令中 49216 是怎么算出來的?公式是 page_no * innodb_page_size + 64。3*16384+64=49216

我們在用這個方式查看下其他兩個索引的高度。

$ hexdump -s 65600 -n 10 ./user.ibd0010040 0100 0000 0000 0000 1700001004a$ hexdump -s 81984 -n 10 ./user.ibd0014040 0200 0000 0000 0000 1800001404a

可見,name 索引的高度是 2,age 索引的高度是 3。

根據索引的結構估算

如果你沒有數據庫服務器的權限。自己也可以根據數據庫索引結構進行估算樹的高度。根據 B+Tree 結構,非葉子節點存儲的是索引數據,葉子節點存儲的是每行的所有數據。非葉子節點每個索引項的大小是,數據大小+指針大小。假設指針大小為 8 個字節。每頁不會被占滿,預留1/5的空隙。下面我們估算下 name 和 age 兩個索引的高度。

name 索引高度估算

非葉子節點每頁存放的索引項數量。每頁大小是 16k。name 的值為 ab。占2個字節。每項數據大小是 2+8=10字節。每頁能存放的索引項數量是 16384 * 0.8 / 10 = 1310 個。葉子節點每頁存放的索引數量。每頁大小是 16k。每項數據大小是 4+2+8=14 個字節。沒頁能存放的索引數量是 16384 * 0.8 / 14 = 936 個。兩層能存放 1310*936=1226160 個數據記錄??梢?20萬條記錄以下,樹的高度為2。

age 索引高度估算

非葉子節點每頁存放的索引項數量。每頁大小是 16k。age 的類型為 int。占4個字節。每項數據大小是 4+8=12字節。每頁能存放的索引項數量是 16384 * 0.8 / 12 = 1092 個。葉子節點每頁存放的索引數量。每頁大小是 16k。每項數據大小是 4+4+8=16 個字節。沒頁能存放的索引數量是 16384 * 0.8 / 16 = 819 個。兩層能存放 1092*819=894348 個數據記錄??梢?0萬條記錄以下,樹的高度為2。100萬條為 3 層。

其它工具

還有一個小工具可以查看。InnoDB 表空間可視化工具innodb_ruby

以上就是獲取 MySQL innodb 的 B+tree 的高度的示例的詳細內容,更多關于MySQL innodb 的 B+tree 的資料請關注好吧啦網其它相關文章!

標簽: MySQL 數據庫
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
亚洲一区中文在线| 欧美高清性hdvideosex| 国内不卡的二区三区中文字幕 | 在线欧美日韩精品| 欧美一区二区网站| 国产精品丝袜在线| 日韩激情一二三区| 国产做a爰片久久毛片| 日本韩国欧美三级| 中文字幕乱码日本亚洲一区二区| 丝袜美腿亚洲综合| 亚洲黑丝一区二区| 91久久精品日日躁夜夜躁欧美| 国产精品婷婷午夜在线观看| 欧美一区久久| 国产精品一区免费观看| 制服丝袜日韩国产| 中文字幕一区二区三区在线不卡| 日韩av在线发布| 欧美激情91| 在线亚洲人成电影网站色www| 亚洲第一成人在线| 91蜜桃在线免费视频| 美女精品国产| 久久久影视传媒| 轻轻草成人在线| 欧美日韩四区| 欧美亚日韩国产aⅴ精品中极品| 国产欧美一区二区三区鸳鸯浴| 秋霞成人午夜伦在线观看| 亚洲一区在线免费| 香蕉久久夜色精品国产使用方法| 久久av二区| 欧美国产欧美亚州国产日韩mv天天看完整 | 日韩免费高清视频| 亚洲韩国精品一区| 牛夜精品久久久久久久99黑人| 欧美成人一区二区三区片免费| 亚洲高清久久久| 香蕉精品999视频一区二区| 亚洲欧美aⅴ...| 国产精品资源在线看| 99精品免费| 精品国产人成亚洲区| 日韩不卡一区二区三区| 在线免费观看日本欧美| 久久国产乱子精品免费女| 国产日韩精品视频一区二区三区| 亚洲影院一区| 天天操天天干天天综合网| 禁久久精品乱码| 日韩一级高清毛片| 免费人成在线不卡| 欧美午夜精品免费| 成人自拍视频在线观看| 美女国产一区| 亚洲影视资源网| 欧美一级网站| 天天免费综合色| 在线精品视频免费观看| 国产一区二区三区美女| 欧美一级视频| 另类专区欧美蜜桃臀第一页| 欧美日韩亚洲综合一区| 性做久久久久久| 欧美撒尿777hd撒尿| hitomi一区二区三区精品| 欧美日韩另类一区| 日韩福利视频网| 日韩一区二区在线免费观看| 91免费版pro下载短视频| 玉足女爽爽91| 99在线精品视频在线观看| 午夜国产精品影院在线观看| 91精品国产黑色紧身裤美女| 欧美片网站免费| 亚瑟在线精品视频| 日韩一区二区免费电影| 亚洲国产精品久久久久婷婷老年| 国产欧美日韩亚州综合| 亚洲一区区二区| 国产乱子轮精品视频| 欧美国产精品中文字幕| 欧美一进一出视频| 成人精品一区二区三区四区| 国产精品传媒在线| 欧美成ee人免费视频| 一区二区三区在线免费观看| 国产视频一区三区| 国产精品综合一区二区| 欧美国产精品专区| 欧美在线观看禁18| 国内激情久久| 亚洲天天做日日做天天谢日日欢| 亚洲性图久久| 老司机一区二区| 国产精品福利一区| 欧美日韩一区中文字幕| 一区二区三区我不卡| 国产综合一区二区| 中文字幕一区二区三区四区 | 国产精品magnet| 美女脱光内衣内裤视频久久网站| 久久亚洲国产精品日日av夜夜| 亚洲成人一区二区| 26uuu国产在线精品一区二区| 亚洲欧美影院| 欧美精品首页| 国产精品第13页| 亚洲黄色成人| 亚洲一区区二区| 国产最新精品精品你懂的| 国产欧美日韩卡一| 欧美日韩黄色影视| 激情欧美一区| 国产高清不卡二三区| 不卡电影一区二区三区| 欧美一个色资源| 性伦欧美刺激片在线观看| 91香蕉视频黄| 美腿丝袜亚洲三区| 亚洲伦在线观看| 久久亚洲影视婷婷| 欧美日韩国产不卡| 久久成人资源| 91论坛在线播放| 久久99久久99精品免视看婷婷| 另类亚洲自拍| 欧美视频网站| 岛国一区二区三区| 日韩—二三区免费观看av| 一区免费观看视频| 久久午夜色播影院免费高清 | 男女激情视频一区| 在线观看www91| 看片网站欧美日韩| 欧美午夜精品久久久久免费视| 欧美军同video69gay| 亚洲r级在线视频| 国产视频一区免费看| 日韩一区二区三区在线观看| 欧美在线视频二区| 国产成人鲁色资源国产91色综| 天堂在线一区二区| 亚洲美女淫视频| 国产精品久久久久久久裸模| 欧美v日韩v国产v| 欧美日本在线观看| 在线中文字幕不卡| 久久免费99精品久久久久久| 国产区二精品视| 最新日韩在线| 亚洲无玛一区| 91在线一区二区三区| 欧美一区二区高清| 欧美羞羞免费网站| 色呦呦日韩精品| 91亚洲精华国产精华精华液| 国产一区免费电影| 久久精品国产在热久久| 日韩成人一级片| 视频一区二区三区入口| 亚洲国产aⅴ成人精品无吗| 亚洲色大成网站www久久九九| 2020国产成人综合网| 精品国产一区二区三区不卡| 日韩欧美在线观看一区二区三区| 91精品国产色综合久久ai换脸| 欧美性一级生活| 欧美性猛交一区二区三区精品| 欧美中日韩免费视频| 亚洲一区二区三区三| 亚洲尤物精选| 九一九一国产精品| 蜜桃传媒麻豆第一区在线观看| 三级一区在线视频先锋 | 国产一区二区三区综合| 午夜精品久久久久久久久久久 | 欧美性感一区二区三区| 欧洲生活片亚洲生活在线观看| 色国产综合视频| 日本高清不卡视频| 欧美在线观看18| 欧美怡红院视频| 欧美日韩大陆一区二区| 欧美丰满嫩嫩电影| 日韩一区二区在线观看视频| 欧美一区二区三区免费观看视频 | 亚洲成人精品影院| 天天免费综合色| 久久精品国产成人一区二区三区 | 精品入口麻豆88视频| 精品久久久久久久久久久久久久久| 欧美成人一级视频| 欧美国产精品一区二区三区| 亚洲图片激情小说| 亚洲一区二区三区四区五区中文| 亚洲午夜精品在线| 蜜臀国产一区二区三区在线播放| 久久精品国产99国产|