InnoDB磁盤空間利用率的查看_MySQL
來源:懂視網
責編:小采
時間:2020-11-09 18:16:09
InnoDB磁盤空間利用率的查看_MySQL
InnoDB磁盤空間利用率的查看_MySQL:bitsCN.com 查看InnoDB的磁盤空間利用率 page利用率主要是指btee里面每個page的使用被使用的空間大小。我們知道InnoDB默認一個page大小是16k。但實際使用情況不會總用滿我們定義為所有page的總使用字節除以總字節數。在理論分析之前,我們要先弄個工具,查一
導讀InnoDB磁盤空間利用率的查看_MySQL:bitsCN.com 查看InnoDB的磁盤空間利用率 page利用率主要是指btee里面每個page的使用被使用的空間大小。我們知道InnoDB默認一個page大小是16k。但實際使用情況不會總用滿我們定義為所有page的總使用字節除以總字節數。在理論分析之前,我們要先弄個工具,查一

bitsCN.com
查看InnoDB的磁盤空間利用率 page利用率主要是指btee里面每個page的使用被使用的空間大小。我們知道InnoDB默認一個page大小是16k。但實際使用情況不會總用滿我們定義為所有page的總使用字節除以總字節數。在理論分析之前,我們要先弄個工具,查一下。 實例統計寫了一個簡單的工具,讀ibd文件上的每個page,算出每個page的實際使用字節,可以得到利用率。我們找了線上一個庫來模擬。表中有1個自增主鍵和3個非聚簇索引。不影響結論地簡化為如下:CREATE TABLE `ctu_factor_risk_99_03` (`seq_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,`a` varchar(32) DEFAULT NULL,`b` varchar(32) DEFAULT NULL,`c` varchar(32) DEFAULT NULL,KEY a (a),KEY bc (b,c),KEY cb (c,b),) ENGINE=InnoDB DEFAULT CHARSET=utf8; 插入數據中a,b,c均為長度為30字節的隨機字符串。 顯然主鍵和其他索引應該分開統計。統計結果發現,主鍵page利用率71%,其他索引利用率約52%。 簡單分析上面的結果很好理解。因為按照主鍵遞增順序插入數據,因此主鍵上數據“緊湊”。 而其他三個索引,則都是隨機更新,需要不停地作索引節點分裂。 如何提升磁盤空間利用率回到最開始的問題。其實我們關心的,是InnoDB為了保存相同的數據,用了多少空間。所以我們的問題變成,存儲相同的數據,如何讓占用的磁盤空間更小。 有一個很直觀的結論。把這些索引刪了重建,必然會減少空間消耗。因為這個操作之后,在新的數據插入之前,這些索引也變成“緊湊的”。 再建了一個與cb相同的索引,再跑,利用率居然高達98%。這個原理大家應該都知道了,只是量化一下而已。 工具附后, 用法 ./ibd_used tb.ibd N1 N2 >/tmp/r 最后幾行為各個索引的利用率統計值 (附件)ibd_used.rar http:///uploadfile/2012/0429/20120429085005514.rar 作者 丁林.tb bitsCN.com
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com
InnoDB磁盤空間利用率的查看_MySQL
InnoDB磁盤空間利用率的查看_MySQL:bitsCN.com 查看InnoDB的磁盤空間利用率 page利用率主要是指btee里面每個page的使用被使用的空間大小。我們知道InnoDB默認一個page大小是16k。但實際使用情況不會總用滿我們定義為所有page的總使用字節除以總字節數。在理論分析之前,我們要先弄個工具,查一