mysql原理~ innodb_page工具詳解



一 目的:分析mysql idb文件具體構成
二 核心語句
   SELECT A.SPACE AS TBL_SPACEID, A.TABLE_ID, A.NAME AS TABLE_NAME, FILE_FORMAT, ROW_FORMAT, SPACE_TYPE, B.INDEX_ID , B.NAME AS INDEX_NAME, PAGE_NO, B.TYPE AS INDEX_TYPE FROM INNODB_SYS_TABLES A LEFT JOIN INNODB_SYS_INDEXES B ON A.TABLE_ID =B.TABLE_ID WHERE A.NAME = 'db/table';
三 基礎
   mysql默認頁大小是16K 所以以下都是參數為16
四 具體用法:
  1 ./innblock table.idb scan 16 查看全部索引
   我們能獲取的內容
  1 Datafile Total Size
  2 INDEX_ID(此處的INDEX_ID正好核對sql語句查詢到的結果)

 3 block no  (page_no,可以根據此進行如下分析)
 2 /innblock table.idb page_no 16 查看具體的數據頁構成
  我們能獲取的內容
  1 block_no: page_no_id  
  2 space_id: 表空間ID
  3 index_id: 索引頁ID
  4 n_rows: 具體行數 不含deleted且已被purged的記錄
  5 del_bytes: 本索引頁中所有deleted了的且已被purged的記錄的總大小。
  鏈表
  Total del rows:1 del rows list(logic): 任何被打標記並且被purge的都會記錄在此

五 總結

  本文內容來源於八怪大神的help文檔,我只是做個自學的記錄 見諒

六 補充

   如何計算表索引的B+樹高度

   根據上面sql語句進行查詢  出關鍵記錄 page_no -> primary 

    1 B+樹的高度則為 page_no+1

    2 B+樹的高度決定了要做多少次IO操作, 幾千萬行的高度有可能和幾百萬的高度一樣

    3 B+樹的高度通常是1-3 

    4 primary page number代表主鍵索引的根頁


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM