国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 課堂 > 基礎(chǔ)知識(shí) > 正文

innblock 用具 InnoDB page觀察利器

2024-09-12 20:30:02
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
  特別鳴謝
  筆者是知數(shù)堂早期學(xué)員,最初有寫這么一個(gè)工具的想法也得到葉金榮老師的認(rèn)可和鼓勵(lì),這個(gè)想法也整整耗掉了好幾個(gè)晚上的休息時(shí)間,這里再次感謝葉金榮老師對(duì)工具審核,葉老師的經(jīng)驗(yàn)和學(xué)識(shí)是每一位學(xué)員寶貴的財(cái)富。
  感謝<>主要作者周彥偉、王竹峰、強(qiáng)昌金對(duì)本工具的認(rèn)可并授權(quán)引用部分內(nèi)容,如果大家對(duì)本文的內(nèi)容感到吃力可以自行參考該書,也可以和書中部分章節(jié)配合使用學(xué)習(xí)。
 
  一、前言
  InnoDB中索引塊的內(nèi)部組織一直是大家比較感興趣并且樂(lè)于研究的東西,我們從很多書籍和文章都不惜筆墨進(jìn)行大量的描述比如<>中就能感受到作者用了大量篇幅描述什么是slot、什么是heap、記錄的邏輯和物理順序是怎么樣的。
 
  但是我們卻很難直觀的看到,因?yàn)閿?shù)據(jù)文件是二進(jìn)制文件。雖然我們可以通過(guò)例如LINUX的hexdump等類似命令進(jìn)行查看,但是大量的16進(jìn)制信息很難直觀的提取出各種有用的信息,相信不少人和筆者一樣都是通過(guò)肉眼進(jìn)行查看,但是這顯然是一種吃力又不討好的方法。
 
  在Oracle中我們可以通過(guò)dump block的方法查看block的信息,那么InnoDB是否也可以這樣呢?
 
  本著這種讓大家更加直觀的觀察到底層索引塊的信息的宗旨,筆者直接借用源碼中的各種宏定義,使用C++和STL list容器實(shí)現(xiàn)了這樣一個(gè)工具innblock。由于工作原因不能全身心投入代碼編寫,代碼有些混亂。所以如果有bug還請(qǐng)大家見(jiàn)諒以及提出,筆者會(huì)盡快進(jìn)行更新,感謝。
 
  約定
  index page(索引頁(yè)、索引塊),InnoDB表是基于聚集索引的索引組織表,整個(gè)表其實(shí)不是聚集索引,就是普通索引。因此InnoDB表空間文件中,數(shù)據(jù)頁(yè)其實(shí)也是索引頁(yè),所以下面我們統(tǒng)稱為索引頁(yè),英文用page no表示;
 
  二、innblock簡(jiǎn)介
  本工具有2個(gè)功能。
 
  第一個(gè)scan功能用于查找ibd文件中所有的索引頁(yè)。
 
  第二個(gè)analyze功能用于掃描數(shù)據(jù)塊里的row data。
 
  先看下 help 輸出
 
  ------------------------------------------------------------------------
  [Author]:gaopeng [Blog]:blog.itpub.net/7728585/abstract/1/ [QQ]:22389860
  [Review]:yejinrong@zhishutang [Blog]:imysql.com [QQ]:4700963
  -------USAGE:../innblock Datafile [scan/pageno] Blocksize
  [Datafile]:innodb data file!
  [scan]:physical scan data file to find index level and index block no
  [pageno]:which block you will parse
  [Blocksize](KB):block size of KB general is 16k only 4k/8k/16k/32k
  ------------------------------------------------------------------------
  scan功能
  [root@test test]# ./innblock  testblock.ibd scan 16
  analyze功能
  [root@test test]# ./innblock  testblock.ibd 3 16
  可以執(zhí)行 innblock help 獲得更詳細(xì)的使用幫助信息。
 
  三、innblock的限制
  不支持REDUNDANT行格式的數(shù)據(jù)文件;
  只支持LINUX x64平臺(tái);
  本工具直接讀取物理文件,部分dirty page可能延時(shí)刷盤而未能被讀取到,可以讓InnoDB及時(shí)刷盤再重新讀取;
  最好在MySQL 5.6/5.7版本下測(cè)試;
  只能解析索引頁(yè),不支持inode page、undo log等類型的page;
  scan功能會(huì)包含delete后的索引塊和drop了的索引塊.
  不能讀取詳細(xì)的row data;
  建議采用獨(dú)立表空間模式,更便于觀察;
  建議僅在測(cè)試環(huán)境下學(xué)習(xí)和研究使用。
  四、 輸出信息詳解
  我在工具的help文檔中也有詳細(xì)的解釋,這里單獨(dú)對(duì)analyze功能解析數(shù)據(jù)塊的輸出詳解一番,并且我也會(huì)給出這些值來(lái)自源碼的哪個(gè)宏定義。這部分知識(shí)點(diǎn)在<>中也有詳細(xì)說(shuō)明。
 
   基本信息(Block base info)
  [block_no]:page offset no inside space,begin is 0(取自 FIL_PAGE_OFFSET)
  索引頁(yè)碼(index page no),該頁(yè)相對(duì)于表空間的偏移量,從0開(kāi)始計(jì)數(shù)。如果page no = 3,則實(shí)際上是第4個(gè)index page。
  [space_id]:this contains the space id of the page(FIL_PAGE_SPACE_ID)
  本索引頁(yè)所屬的表空間ID,可以在 INNODB_SYS_TABLES、INNODB_SYS_TABLESPACES、INNODB_SYS_DATAFILES 等系統(tǒng)視圖中查看。

(編輯:武林網(wǎng))

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 买车| 洞口县| 潍坊市| 九台市| 闵行区| 黎川县| 二手房| 凤城市| 定安县| 临高县| 西昌市| 高陵县| 丘北县| 息烽县| 南乐县| 贵阳市| 宿州市| 乌拉特后旗| 江华| 增城市| 神池县| 恩施市| 三江| 久治县| 六安市| 内乡县| 阳高县| 桦川县| 东明县| 安庆市| 资溪县| 南昌县| 海安县| 深泽县| 紫云| 左权县| 富阳市| 丹棱县| 乌兰县| 中卫市| 福泉市|