檢視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
作者 丁林.tb
檢視InnoDB的磁碟空間利用率
丁奇,原文 這周阿里集團dba內部分享時,支付寶的黃忠同學提了乙個問題,關於innodb索引page 的利用率。page利用率 主要是指btee裡面每個page的使用被使用的空間大小。我們知道innodb預設乙個page大小是16k。但實際使用情況不會總用滿 我們定義為所有page的總使用位元組除以...
作業系統 習題磁碟空間利用率
1 不採用記錄成組操作時磁空間的利用率為 2 採用記錄成組操作且塊因子為5時,磁帶空間的利用率為 3 當按上述方式把檔案存放到磁帶上後,使用者要求每次讀乙個邏輯記錄存放到他的工作區。當對該記錄處理後,又要求把下乙個邏輯記錄讀入他的工作區,直至10個邏輯記錄處理結束。系統應如何為使用者服務?1 利用率...
查詢表空間利用率
查詢表空間利用率 考慮自增長情況,此處利用率考慮的是相對於閥值的表空間利用率 select a.tablespace name,total m free shortnum m free,total free shortnum m as used,round free shortnum total 1...