免费观看又色又爽又黄的小说免费_美女福利视频国产片_亚洲欧美精品_美国一级大黄大色毛片

MYSQLPAGE頁及如何通過innochecksum來對ibd文件進行查詢

這篇文章給大家介紹MySQL PAGE頁及如何通過innochecksum來對ibd文件進行查詢,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

成都創新互聯網站建設公司是一家服務多年做網站建設策劃設計制作的公司,為廣大用戶提供了網站設計、成都網站設計,成都網站設計,廣告投放平臺,成都做網站選成都創新互聯,貼合企業需求,高性價比,滿足客戶不同層次的需求一站式服務歡迎致電。

問:MYSQL的一個PAGE  頁多大

回答干脆利索,16K唄,我想這是大多數人的第一個反應和回答,這個回答沒有毛病。但這16k里面到底有多少是你表中存儲的那些實實在在的數據 ??

這時95%的人肯能已經......

我們都知道,MySql 存儲數據的物理單位,不是行,而是數據頁,默認是一個16KB的數據單元。實際上 MYSQL的頁的大小是可以改變的,可以是8K可以是32K,UNIV_PAGE_SIZE 其實是定義一個MYSQL頁面大小的參數,同時UNIV_PAGE_SIZE_SHIFT也是與修改MYSQL 默認頁大小有關的量,如果你的頁的大小為 16K 則UNIV_PAGE_SIZE_SHIFT的數字必須設置為 14 ,2乘以14次自己,就是16K。(16384)(順便問一句 MYSQL一行能存儲的大小是多少?回味一下)

每個頁面中都會分配一個32位的整數頁碼,通過這個頁碼,頁面之間產生了關系,并且也限制了大小, 232 x 16 KiB = 64 TiB 這就算是一個表最大的存儲容量了。所以一個表的大小與單個頁面之間的關系如官方下面的圖,頁面是一個變量的話,其他都不變。

MYSQL PAGE頁及如何通過innochecksum來對ibd文件進行查詢

實際上MYSQL 的頁面存儲的格式也是有分門別類的,在每個數據頁的的文件頁頭中38個字節不是白占用的,他主要負責以下的一些功能

1 監測頁面的數據的正確性,FIL_PAGE_CHECKSUM, (還記得MYSQL 廣泛提供的頁面監測的工具嗎)  4 字節

2 FIL_PAGE_OFFSET ,這個其實可以理解為用頁面組成的表的每頁的編碼,用來看看這個物理的文件到底有多少個頁面,當前你訪問的頁面在整體的位置

4個字節

3 FIL_PAGE_PREV  FILE_PAGE_NEXT ,我們都在說MYSQL是B+ 樹的數據存儲結構,其中這兩個值就表達了 B + 數據樹中的雙向鏈表的形式, 因為他們兩個是指針,指定當前頁面前一個頁面的地址,也指向了當前頁面下一個頁面的地址。所以每個數據頁之間是一個“雙向鏈表”。這對數據的查詢時提取數據是非常重要的。

4 FIL_PAGE_LSN  被修改的日志序列位置LSN

5 FIL_PAGE_TYPE 當前頁面的類型  頁面是B+樹葉子節點, UNDO LOG ,索引節點,insert buffer空閑列表,insertbuffer位圖, 系統頁面,事務系統數據,BLOB頁面,文件空間頭,擴展描述頁 等

6 LSN_FLUSH_LSN 系統表空間的一個頁中定義,與普通的數據頁面無關

7 FIL_PAGE_ARCH_LOG_NO_OR_SPACE_ID  頁面數據那個表空間

其中關于當前ibd 文件的中存儲的數據的類型可以通過mysql 自帶的工具 

innochecksum 來進行查看,這里我們打開MYSQL 中的一個ibd文件

MYSQL PAGE頁及如何通過innochecksum來對ibd文件進行查詢

在一個MYSQL Per = 1 情況下的頁面,我看可以看到這個文件中 有 1337個索引的頁面,我們的索引節點 INODE PAGE 只有一個,還有452個新分配的頁面,一個insert buffer bitmap 頁面, 1個文件 file spave header

我們將這些數字加在一起,1792 * 16384/1024/1024 = 28MB

MYSQL PAGE頁及如何通過innochecksum來對ibd文件進行查詢

MYSQL PAGE頁及如何通過innochecksum來對ibd文件進行查詢

從實際當中表的ibd文件,我們也可以驗證。

所以文件的存儲空間與我們的從Ibd文件中導出的數據記錄頁面的信息的組合最終得出的數據存儲頁面大小是一致的。

現在馬上就有一個疑問

問:那這28MB 的數據空間里面有沒有還可以寫入數據的頁面。

SELECT round((data_length+index_length)/1024/1024,2) FROM information_schema.tables WHERE   table_schema='employees'   AND table_name='dept_emp';

MYSQL PAGE頁及如何通過innochecksum來對ibd文件進行查詢

實際當中通過數據庫的方式SQL的語句來獲得表占用的數據空間,與通過innochecksum 獲得空間之間是對不上的。

對比一下,目前通過 innochecksum 獲得數據存儲空間占用是 20.89 MB

而通過語句來獲得是17.09MB

到底哪個更準確

我們對目前的表進行

OPTIMIZE TABLE dept_emp;  讓表中的空間進行一次整理

MYSQL PAGE頁及如何通過innochecksum來對ibd文件進行查詢

然后我看一下數值到底有什么改變,通過SQL 來計算后結果是 24.55

MYSQL PAGE頁及如何通過innochecksum來對ibd文件進行查詢

MYSQL PAGE頁及如何通過innochecksum來對ibd文件進行查詢

而我們再次通過innochecksum來對ibd文件進行查詢,占用的數據空間在20.77左右。

同時也做了其他的一些表的空間使用,以及free空間的計算,可以證明通過SQL 來獲得當前表的ibd的空間使用,與實際的表在LINUX下的使用情況是對不上的。

而通過innochecksum 來獲得數據表的使用情況,是比較穩定,并且也是比較準確的。另外OPTIMIZE后會導致通過SQL 來計算表的空間占用浮動較大,而innochecksum 不會受到影響,并能準確返回實際的磁盤空間使用的情況。

關于MYSQL PAGE頁及如何通過innochecksum來對ibd文件進行查詢就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

本文名稱:MYSQLPAGE頁及如何通過innochecksum來對ibd文件進行查詢
URL分享:http://m.newbst.com/article8/gpjsop.html

成都網站建設公司_創新互聯,為您提供品牌網站設計網站策劃小程序開發云服務器域名注冊微信公眾號

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都網頁設計公司