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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- maven中的profile檔案的解析Maven
- FreeFileSync:在 Ubuntu 中對比及同步檔案Ubuntu
- java將Excel檔案上傳並解析為List陣列JavaExcel陣列
- 探究MySQL中的日誌檔案MySql
- FreeBSD檔案的屬性(轉)
- MySQL-02.MySQL的資料目錄和表檔案解析MySql
- MySQL 系統表空間檔案解析MySql
- freemarker 生成前端檔案前端
- .Net Core中的配置檔案原始碼解析原始碼
- php解析mpp檔案中的前置任務PHP
- MYSQL 5.7中臨時檔案的使用MySql
- MYSQL Space id in fsp header,but in the page header錯誤MySqlHeader
- mysql程式碼閱讀-frm檔案格式解析MySql
- FreeBSD裝置檔案(轉)
- 檔案解析,在mysql配置和檢查項一樣的專案MySql
- Mysql中備份資料檔案中/*!*/的含義MySql
- 向mysql中匯入.sql檔案MySql
- FreeBSD建立檔案系統(轉)
- unix freebsd 配製檔案(轉)
- MySQL中的幾類日誌檔案介紹MySql
- 我是如何使用freemarker生成Word檔案的?
- Unix與FreeBSD下檔案的屬性(轉)
- java資料list寫入檔案Java
- eml檔案解析
- Class檔案解析
- 【Mysql】匯出資料到excel檔案中MySqlExcel
- 設定grub配置檔案中的螢幕解析度
- ie中jQuery無法解析xml檔案的解決方案jQueryXML
- 用Main方法呼叫freemarker生成檔案AI
- FreeBSD安裝檔案系統(轉)
- Java整合FreeMarker匯出Pdf檔案Java
- list集合、txt檔案對比的工具類和檔案讀寫工具類
- Qt的.pro檔案格式解析QT
- Hibernate的配置檔案解析
- MySQL中的日誌檔案 你全都瞭解嗎?MySql
- 解析MySQL 配置檔案 my.cnf / my.ini 區別MySql
- mysql的資料檔案MySql
- 把list集合的內容寫入到Xml中,通過XmlDocument方式寫入Xml檔案中XML