精品免费在线观看-精品欧美-精品欧美成人bd高清在线观看-精品欧美高清不卡在线-精品欧美日韩一区二区

17站長網(wǎng)

17站長網(wǎng) 首頁 數(shù)據(jù)庫 Mysql 查看內(nèi)容

MYSQL INNODB 怎樣計(jì)算B+樹表的最大容量和行數(shù)

2023-3-16 14:16| 查看: 2102 |來源: 互聯(lián)網(wǎng)

考慮表結(jié)構(gòu)如下: create table testzh(id int primary key auto_increment ,id2 int,id3 int);插入數(shù)據(jù):delimiter //create procedure ins3()begindeclare i ...
考慮表結(jié)構(gòu)如下:
     create table testzh(id int  primary key auto_increment ,id2 int,id3 int);
插入數(shù)據(jù):
delimiter //
 create procedure ins3()
     begin
    declare i int;
     set i=0;
     while i<10000 do
         insert into testzh(id2,id3) values(FLOOR((RAND()*100000)),FLOOR((RAND()*100000)));
         set i=i+1;
     end while;
  end;
//
delimiter ;
 
 
     這里僅僅考慮聚合索引的B+數(shù)結(jié)構(gòu)。
     首先我們要考慮2個(gè)因素:
1、分支節(jié)點(diǎn)如何存儲(chǔ)一行數(shù)據(jù)
2、葉子結(jié)點(diǎn)如何存儲(chǔ)一行數(shù)據(jù)
 
位了找到這個(gè)問題我們必須要找到哪些塊是葉子結(jié)點(diǎn),哪些塊是非葉子結(jié)點(diǎn),這里使用自己寫的一個(gè)程序
找到詳細(xì)參考最后的代碼
(http://blog.itpub.net/7728585/viewspace-2128817/)
[root@testmy test]# ./t1  testzh.ibd
file size is 442368
Block id is 3:Index page no is 552 : B+ Tree Level is 1
Block id is 4:Index page no is 552 : B+ Tree Level is 0
Block id is 5:Index page no is 552 : B+ Tree Level is 0
Block id is 6:Index page no is 552 : B+ Tree Level is 0
Block id is 7:Index page no is 552 : B+ Tree Level is 0
Block id is 8:Index page no is 552 : B+ Tree Level is 0
Block id is 9:Index page no is 552 : B+ Tree Level is 0
.....
 
可以看到在這個(gè)文件中block_id = 3的是非葉子結(jié)點(diǎn)
其他的塊是葉子結(jié)點(diǎn)。
那我們來研究第一個(gè)問題
1、分支節(jié)點(diǎn)如何存儲(chǔ)一行數(shù)據(jù)
其實(shí)這個(gè)問題答案就是
6字節(jié)固定開銷+4字節(jié)(int數(shù)據(jù)類型4字節(jié))+4字節(jié)(指向葉子結(jié)點(diǎn)的指針開銷)
我們知道每個(gè)數(shù)據(jù)庫塊的前120直接是管理固定開銷如:
FILE HEADER,INDEX HEADER等
在塊尾部也有8字節(jié)的固定開銷
那么我們從offset 120開始向后面數(shù)14個(gè)字節(jié),這里也要使用我自己寫的工具
bcview 方便查看
./bcview testzh.ibd 16 120 14
current block:00000003--Offset:00120--cnt bytes:14--data is:00100011000e8000000100000004
得到數(shù)據(jù):
00100011000e8000000100000004
分析一下:
00100011000e8000000100000004
 
固定開銷(6字節(jié))
00    nullable field bitmap (?)
10    info flags+number of records owned
0011  order+ record type (0000 0000 0001 0001)
000e     下一個(gè)偏移量
--可變開銷(實(shí)際數(shù)據(jù)4字節(jié))
80000001 (實(shí)際主鍵數(shù)據(jù)1其中8是符號(hào)位)
--固定開銷(4字節(jié))
00000004 (葉子結(jié)點(diǎn)block指針)
我們可以看到這是非葉子結(jié)點(diǎn)存儲(chǔ)數(shù)據(jù)的格式如此,除了4字節(jié)的主鍵外,這里包含了10字節(jié)的額外開銷。
 
2、葉子結(jié)點(diǎn)如何存儲(chǔ)一行數(shù)據(jù)
接下來我們來看一下這個(gè)表的每一行數(shù)據(jù)是如何存放的,二進(jìn)制如下:
./bcview testzh.ibd 16 120 31
current block:00000004--Offset:00120--cnt bytes:31--data is:00000010001f800000010000004d1995cd000001440110800046cd80000683
 
00 nullable field bitmap(?)
00 info flags+number of records owned
0010 order+record type
001f 下一個(gè)偏移量
80000001 (實(shí)際主鍵id數(shù)據(jù)1其中8是符號(hào)位)
0000004d1995  transaction id
cd000001440110 roll pointer
800046cd (實(shí)際數(shù)據(jù)id2:18125 8是符號(hào)位)
80000683 (實(shí)際數(shù)據(jù)id2:1667  8是符號(hào)位)
 
 
實(shí)際上就是31個(gè)字節(jié)
那么我們很容易計(jì)算出來如果滿存儲(chǔ)行大約(16*1024-128(塊頭塊尾部))/31 = 524 行數(shù)據(jù)。當(dāng)然實(shí)際上存儲(chǔ)達(dá)不到這個(gè)值受到
B+樹分裂行為以及填充因子等限制實(shí)際上到不了這個(gè)值,我這里去大約500行數(shù)據(jù)
 
好了對(duì)于這張表這里我們可以實(shí)際大約計(jì)算一下理論值,實(shí)際值將略�。�
 
一層B+樹     最大16K空間                                                                                         約500行數(shù)據(jù)
二層B+樹     最大約18M空間((16*1024-128)/14 * 16/1024 )                                         約58000行數(shù)據(jù)((16*1024-128)/14 *500)
三層B+樹     最大約21000M空間(power((16*1024-130)/14,2) * 16/1024)                       約673960500行數(shù)據(jù)(power((16*1024-130)/14,2) * 500)
四層B+樹     最大約24452000M空間(power((16*1024-130)/14,3) * 16/1024)                  約782468140500行數(shù)據(jù)(power((16*1024-130)/14,3) * 500)
 
 
但是要注意這里最大空間受到主鍵選擇影響很大,如果不是int為主鍵那么其非葉子結(jié)點(diǎn)一行數(shù)據(jù)將不會(huì)是14字節(jié)如果是long類型將是18字節(jié),那么最大空間
將不會(huì)達(dá)到這么大,而行數(shù)更是受到實(shí)際一行數(shù)據(jù)大小限制,這里只是以文章開頭建立的表為列子。
本文最后更新于 2023-3-16 14:16,某些文章具有時(shí)效性,若有錯(cuò)誤或已失效,請(qǐng)?jiān)诰W(wǎng)站留言或聯(lián)系站長:[email protected]
·END·
站長網(wǎng)微信號(hào):w17tui,關(guān)注站長、創(chuàng)業(yè)、關(guān)注互聯(lián)網(wǎng)人 - 互聯(lián)網(wǎng)創(chuàng)業(yè)者營銷服務(wù)中心

免責(zé)聲明:本站部分文章和圖片均來自用戶投稿和網(wǎng)絡(luò)收集,旨在傳播知識(shí),文章和圖片版權(quán)歸原作者及原出處所有,僅供學(xué)習(xí)與參考,請(qǐng)勿用于商業(yè)用途,如果損害了您的權(quán)利,請(qǐng)聯(lián)系我們及時(shí)修正或刪除。謝謝!

17站長網(wǎng)微信二維碼

始終以前瞻性的眼光聚焦站長、創(chuàng)業(yè)、互聯(lián)網(wǎng)等領(lǐng)域,為您提供最新最全的互聯(lián)網(wǎng)資訊,幫助站長轉(zhuǎn)型升級(jí),為互聯(lián)網(wǎng)創(chuàng)業(yè)者提供更加優(yōu)質(zhì)的創(chuàng)業(yè)信息和品牌營銷服務(wù),與站長一起進(jìn)步!讓互聯(lián)網(wǎng)創(chuàng)業(yè)者不再孤獨(dú)!

掃一掃,關(guān)注站長網(wǎng)微信

大家都在看

    熱門排行

      最近更新

        返回頂部
        主站蜘蛛池模板: 99热在线获取最新地址 | 国产成人精品第一区二区 | 成人在线观看国产 | 国产黄视频在线观看 | 亚洲自拍激情 | 亚洲国产日韩欧美 | 国产精品日本不卡一区二区 | 日本亚州视频在线八a | 亚洲精品色播一区二区 | 一男一女野外大黄毛片 | 成人在线日韩 | 69视频最新在线观看 | 欧美黄色大片视频 | 精彩视频一区二区 | 免费人成网站在线播放 | 免费a级毛片在线观看 | 亚洲视频精品在线观看 | 国产女乱淫真高清免费视频 | 国产区视频在线 | 欧美在线网站 | 狼人青草久久网尹人 | 手机看片日韩高清国产欧美 | 久久国产精品夜色 | 日本一级毛片免费播放 | 性xxxxxxx18老师| 麻豆视频免费观看入口 | 成人深爱网| 亚洲免费人成在线视频观看 | 成人午夜视频在线观看 | 亚洲在线免费观看视频 | 男女又黄又刺激黄a大片桃色 | 一级做a爰性视频 | 国产精品拍拍拍福利在线观看 | 日韩精品在线视频 | 亚洲国产片高清在线观看 | 国产精品大全国产精品 | 六月丁香激情综合成人 | 欧美日韩不卡中文字幕在线 | 免费看国产精品久久久久 | 在线观看欧美大片 | 国产性生大片免费观看性 |