麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 數據庫 > 文庫 > 正文

INNODB 頁節點數據的存儲方法

2024-09-07 22:12:50
字體:
來源:轉載
供稿:網友
  前文:
  關于MYSQL INNODB index page header學習和實驗總結
  http://blog.itpub.net/7728585/viewspace-2063921/
  關于INNODB SYSTEM RECORD infimum和supremum的學習和實驗研究
  http://blog.itpub.net/7728585/viewspace-2065464/
 
  所用到的工具是自己寫的mysqlblock和bcview,
  我放到了百度云盤
  http://pan.baidu.com/s/1num76RJ
  供大家下載和使用
  本文只討論COMPACT行模式
 
  數據:
  mysql> select * from km1;
  +------+---------+
  | id   | name    |
  +------+---------+
  |    2 | gaopeng |
  |    4 | gaopeng |
  |    5 | gaopeng |
  |    6 | gaopeng |
  |    7 | gaopeng |
  |    8 | gaopeng |
  +------+---------+
  6 rows in set (0.04 sec)
 
  上一篇文章已經從infimum找到了第一行數據的偏移量
  為99+65=164
  同時取出了第一行數據:
  bcview km1.ibd 16 164 30|more
  current block:00000003--Offset:00164--cnt bytes:30--data is:000001cc64260000002d0272d300000d1201108000000267616f70656e67
  分解一下數據
  000001cc6426   ROWID
  0000002d0272   transaction id
  d300000d120110 roll pointer
  80000002       數據2,這里8出現在第15位,可能為符號位
  67616f70656e67 數據'gaopeng'的ascII值
 
  那么我們解析來介紹關于CLUSTER KEY-LEAF BLOCK的相關的部分
  很顯然我這里的表只有一個塊,因為數據很少。所以先介紹這個
  ,因為所謂的infimum的offset是指向的數據的開頭,而行頭信息
  記錄在offset-N的位置,N不確定看了如下就知道了
 
 
             variable field lengths  (1-2 bytes* var )
             nullable field bitmap   (1 bit * null field)
             info flags              (4 bits)
             number of records owned (4 bits)
             order                   (13 bits)
             record type             (3 bits)
             next record offset      (2 bytes)
  offset ----cluster key fields      (N bytes)
             transaction id          (6 bytes)
             roll pointer            (7 bytes)
             non-key fields          (M bytes)
 
  1、variable field lengths
     每個可變長度的變量類型存儲一個長度如varchar,對于固定長度的比如INT不記錄。
     如果不存在可變長度的變量類型,至少占用一個字節為00。
  2、nullable field bitmap
     每個NULL值占用一個一位(bit),如果不滿一個字節按一個字節算,如果不存在NULL值
     至少占用一個字節為00。
  3、info flags
     這4位(4bits)標示是一個行標識,其中binary 0001表示非葉節點最小的行
     其中binary 0010表示是刪除的行,而infimum和supremum行在我測試數據庫中為binary 0000
  4、number of records owned
     這4位(4bits)表示在本page directory(槽)中的記錄數,關于槽的概念后面詳細探討
  5、order
     這13位(13bits)表示記錄插入到塊中順序,INFIMUM恒等于0而SPREMUM恒等于1,而數據行的ORDER從2開始,這里的order
     我實驗得出的結論為實際物理空間的順序
  6、record type
     這3位(3bits)表示記錄的類型,supermum恒等于3及binary 011,infimum恒等于2及binary010,節點指針為1及001,數據行為000
  7、next record offset
     這2個字節是按照CLUSTER KEY值排序的,也就是說他的順序和order沒有任何聯系,order是插入的順序
     在INFIMUM中表示的是第一個行的偏移量這個偏移量是當前記錄的位置+offset,這個offset直接指向了數據而相關的行頭在offset-n開始n為行頭的開銷。
     當然supermum為的偏移量就是NULL空指針了。
  8、cluster key fields
     這N個字節代表主鍵字節數,沒有就是ROWID占用6字節
  9、transaction id
     這6個字節為最后一次修改本行的事物ID
  10、roll pointer
      這7個字節是用于支持MVCC多版本的回退指針,
      1bit 標識
      7bit 回退段ID
      4bytes 回滾段頁號
      2bytes 回滾段頁的偏移量
     這幾位在討論MVCC的時候詳細研究
  11、non-key fields
      也就是M個字節的非主鍵字段的數據了。
 
  同樣分解數據
  07
  00
  0
  0
  0020       這里分解同上 0000 0000 0010 0=十進制4 這是order 表示這個數據在上條數據插入之前,但是OFFSET是按照ROWID排序的。
  ffb6       任然是補碼的方式 實際就是-74
  000001cc6500
  0000002d062bab
  00000d0c0110
  80000005   實際數據5
  67616f70656e67 實際數據'gaopeng'

(編輯:武林網)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 91一区二区三区久久久久国产乱 | 黄色网址免费进入 | 伊人二本二区 | 91成人在线网站 | 无码av女优 | 成人性视频免费网站下载软件 | 免费午夜视频 | 日本网站在线看 | 欧美日韩国产一区二区三区在线观看 | 国产精品免费一区二区三区都可以 | 91香草视频 | 国产精品视频一区二区噜噜 | 国产乱一区二区三区视频 | 美女福利视频国产 | 免费播放av | 久久亚洲精品久久国产一区二区 | 亚洲嫩草av | 国产精品美女久久久久久不卡 | 欧美成人免费看 | 黄色成人在线 | 欧美在线观看视频一区 | 日日摸夜夜骑 | 蜜桃传媒视频麻豆第一区免费观看 | 亚洲午夜精选 | 五月天影院,久久综合, | h视频免费观看 | 国产精品亚洲欧美一级在线 | xxxxhdhdhdhd日本| 久久久aa | 久草最新 | 一区二区免费网站 | 午夜视频观看 | 精品国产一区二 | 一级做a爱片性色毛片高清 日本一区二区在线看 | 午夜男人在线观看 | 日产精品久久久一区二区开放时间 | 欧洲精品色| 国产欧美精品综合一区 | 久久久久亚洲a | av在线影片 | 综合在线一区 |