檢視InnoDB的磁碟空間利用率

2021-06-08 05:46:25 字數 1168 閱讀 2924

**丁奇,原文:

這周阿里集團dba內部分享時,支付寶的黃忠同學提了乙個問題,關於innodb索引page 的利用率。

page利用率

主要是指btee裡面每個page的使用被使用的空間大小。我們知道innodb預設乙個page大小是16k。但實際使用情況不會總用滿

我們定義為所有page的總使用位元組除以總位元組數。

在理論分析之前,我們要先弄個工具,查一下。

例項統計

寫了乙個簡單的工具,讀ibd檔案上的每個page,算出每個page的實際使用位元組,可以得到利用率。

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 最後幾行為各個索引的利用率統計值

InnoDB磁碟空間利用率的檢視

檢視innodb的磁碟空間利用率 page利用率 主要是指btee裡面每個page的使用被使用的空間大小。我們知道innodb預設乙個page大小是16k。但實際使用情況不會總用滿 我們定義為所有page的總使用位元組除以總位元組數。在理論分析之前,我們要先弄個工具,查一下。例項統計 寫了乙個簡單的...

檢視磁碟資訊磁碟空間

如果要檢視磁碟還剩多少空間,當然是用df的命令了。root localhost df h 檔案系統 容量 已用 可用 已用 掛載點 dev sda2 14g 11g 2.6g 82 dev sda1 99m 14m 81m 14 boot tmpfs 442m 275m 168m 63 dev sh...

linux檢視磁碟空間

如果要檢視磁碟還剩多少空間,當然是用df的命令了。root localhost df h 檔案 系統 容量 已用 可用 已用 掛載點 dev sda2 14g 11g 2.6g 82 dev sda1 99m 14m 81m 14 boot tmpfs 442m 275m 168m 63 dev s...