1.indexheader頭部,40位元組,記錄indexfile的統計資訊:
begaintimestamp:該索引檔案中包含訊息的最小儲存時間
endtimestamp:該索引檔案中包含訊息的最大儲存時間
begainphyoffset:該索引檔案中包含訊息的最大物理偏移量(commitlog檔案偏移量)
endphyoffset:該索引檔案中包含訊息的最大物理偏移量(commitlog檔案偏移量)
hashslotcount:hashslot個數,並不是hash槽的個數,在這裡意義不大
indexcount:index條目列表當前已使用的個數,index條目在index條目列表中按順序儲存
2.hash槽,乙個indexfile預設包含500萬個hash槽,每個hash槽儲存的是落在該hash槽的hashcode最新的index的索引
3.index條目列表:預設乙個索引檔案包含2000萬個條目,每乙個index條目結構如下
hashcode:key的hashcode
phyoffset:訊息對應的物理偏移量
timedif:該訊息儲存時間與第一條訊息的時間戳的差值,小於0該訊息無效
preindexno:該條目的前一條記錄的index索引,當出現hash衝突時,構建的鍊錶結構
關鍵:mapindexfile#putkey
計算偏移
該hashcode沒有對應的條目直接返回。
遍歷衝突鏈,鏈中所有的phyoffsets.add(phyoffsetread);
讀書筆記 Mysql 索引
mysql有不同的儲存引擎型別,儲存引擎使用不同的方式將索引存放在磁碟上。不同的存放方式對效能有不同的影響。myisam按照行儲存的物理位置來尋找資料,innodb按照主鍵值引用行。mysql 索引的型別 b tree索引 b tree索引的適用場景 匹配全名,匹配最左字首,匹配列字首,精確匹配一部...
MySQL 讀書筆記 索引(1)
普通索引 主鍵索引 唯一索引 聯合索引 create table table name col name data type unique index index name col name asc desc alter table table name add index unique index...
讀書筆記 C 檔案操作
在c 中,對檔案的操作是通過stream的子類fstream file stream 來實現的,在標頭檔案中定義 一 開啟檔案 fstream類的成員函式open 原形 void open const char filename,int mode,int access filename 開啟的檔案名...