MySQL笔记-ibd文件格式初步分析(仅数据块笔记)
在MySQL建立表后,會在對應的庫文件夾下創建2個文件。
一個是frm,一個是ibd,目前這個博文為簡單分析下這個文件格式。
?
這里首先要知道一些預備知識:
查看InnoDB塊的大小,一般是16k
show vaiables like '%page%'從中可以看到innodb_page_size為16384字節。
使用ibd除以這個字節大小,就可以知道這個文件有多少塊了!
如:
98304/16384可知,這個gyj_t3.ibd有6個page
其中此庫對應的數據為:
看下官方給的文件結圖:
第一塊為:File Space Header
第二塊為:Insert Buffer Bitmap
第三塊為:File Segment inode
從第四塊開始就是存數據的了,把對應的ibd文件放到windows下,打開看看。直接來看看第四塊,數據塊,頭標識為0x45B
來搜索下:
先來驗證下這個是不是第三塊的末尾:
C018h,對應的十進制為49176
第一塊的位置:
為0018h對應的十進制為24。
這個前面的字符為文件頭,用于標識這個是什么格式的文件,等信息。
?
下面來算算這個是不是第三塊結束,的位置:(49176 - 24) / 16384 = 3剛剛好。
這個就是數據位了!
看下對應的數據文件:
從中可以看到,在MySQL數據段中,NULL以及’’不占空間。
int長度是4字節,其他可變長name長度是10字節,用多少長多少。
第二行數據ID:80 00 00 03,下一行在80 00 00 04
?
?
總結
以上是生活随笔為你收集整理的MySQL笔记-ibd文件格式初步分析(仅数据块笔记)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring Cloud笔记-Maven
- 下一篇: SQL笔记-Oracle中varchar