InnoDB磁碟空間利用率的檢視

2021-12-29 21:35:36 字數 1128 閱讀 7227

檢視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...