MySQL解析檔案fsp中的free list
最近在改進之前解析檔案的程式,有一些內容之前沒有解析,比如fsp上的free list,很多描述的文章中只是說這個是個節點的連結串列,但是具體怎麼解析對應的位元組,沒有描述,所以看了下原始碼,透過看原始碼就比較清晰的知道怎麼解析了。
比如解析free list的
Initializes a list base node. */ UNIV_INLINE void flst_init( /*======*/ flst_base_node_t* base, /*!< in: pointer to base node */ mtr_t* mtr) /*!< in: mini-transaction handle */ { ut_ad(mtr_memo_contains_page_flagged(mtr, base, MTR_MEMO_PAGE_X_FIX | MTR_MEMO_PAGE_SX_FIX)); mlog_write_ulint(base + FLST_LEN, 0, MLOG_4BYTES, mtr); flst_write_addr(base + FLST_FIRST, fil_addr_null, mtr); flst_write_addr(base + FLST_LAST, fil_addr_null, mtr); } 透過上面的初始化的過程,我們可以看到有4位元組是代表長度,後面2個地址,一個是開始,一個是結束
透過flst_get_first這個讀取開始節點的函式,可以看到是呼叫了flst_read_addr flst_get_first( /*===========*/ const flst_base_node_t* base, /*!< in: pointer to base node */ mtr_t* mtr) /*!< in: mini-transaction handle */ { return(flst_read_addr(base + FLST_FIRST, mtr)); } flst_read_addr( /*===========*/ const fil_faddr_t* faddr, /*!< in: pointer to file faddress */ mtr_t* mtr) /*!< in: mini-transaction handle */ { fil_addr_t addr; ut_ad(faddr && mtr); addr.page = mtr_read_ulint(faddr + FIL_ADDR_PAGE, MLOG_4BYTES, mtr); addr.boffset = mtr_read_ulint(faddr + FIL_ADDR_BYTE, MLOG_2BYTES, mtr); ut_a(addr.page == FIL_NULL || addr.boffset >= FIL_PAGE_DATA); ut_a(ut_align_offset(faddr, UNIV_PAGE_SIZE) >= FIL_PAGE_DATA); return(addr); } 這樣我們就知道free list是怎麼解析的了
有興趣學習原始碼的加群一起學習啊 QQ: 700072075
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25719946/viewspace-2917046/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SpringBoot 如何解析配置檔案中的list?Spring Boot
- java將Excel檔案上傳並解析為List陣列JavaExcel陣列
- MySQL-02.MySQL的資料目錄和表檔案解析MySql
- MySQL 系統表空間檔案解析MySql
- 探究MySQL中的日誌檔案MySql
- 檔案解析,在mysql配置和檢查項一樣的專案MySql
- php解析mpp檔案中的前置任務PHP
- .Net Core中的配置檔案原始碼解析原始碼
- Mysql中備份資料檔案中/*!*/的含義MySql
- 向mysql中匯入.sql檔案MySql
- springboot yml 配置檔案注入Map,ListSpring Boot
- java資料list寫入檔案Java
- Class檔案解析
- eml檔案解析
- Benchmarksql的props配置檔案解析SQL
- Qt的.pro檔案格式解析QT
- DICOM醫學檔案的解析
- MySQL:5.7.11 超過最大開啟檔案數crash原因解析MySql
- 解析MySQL 配置檔案 my.cnf / my.ini 區別MySql
- 設定grub配置檔案中的螢幕解析度
- ie中jQuery無法解析xml檔案的解決方案jQueryXML
- MySQL中的日誌檔案 你全都瞭解嗎?MySql
- MySQL:Innodb表 Data free 的計算概要MySql
- python XML 檔案解析PythonXML
- java class檔案解析Java
- jdom解析xml檔案XML
- BVH檔案格式解析
- MySQL配置檔案MySql
- mysql 配置檔案MySql
- java解析json listJavaJSON
- XML 檔案解析實踐 (DOM 解析)XML
- 解析MySQL中INSERT INTO SELECT的使用MySql
- Torrent檔案的解析與轉換
- 原始碼解析Flask的配置檔案原始碼Flask
- 如何解析 redis 的 rdb 檔案Redis
- 把list集合的內容寫入到Xml中,通過XmlDocument方式寫入Xml檔案中XML
- Ubuntu APT sources.list 檔案格式解釋UbuntuAPT
- File list Export for Mac檔案列表匯出工具ExportMac