mysql中information_schema.tables字段說明
data_free是空間碎片,單位是B。產生原因;
(1)記錄被Delete,且原空間無法復用;
(2)記錄被Update(通常出現在變長字段中,varchar,text),原空間無法復用;
data_length是數據長度,是所存數據的存儲占用量
index_length是索引長度,是索引所占的存儲空間
字段 | 含義 |
table_catalog | 數據表登記目錄 |
table_schema | 數據表所屬的數據庫名 |
table_name | 表名稱 |
table_type | 表類型[system view|base table] |
engine | 使用的數據庫引擎[MyISAM|CSV|InnoDB] |
version | 版本,默認值10 |
row_format | 行格式[Compact|Dynamic|Fixed] |
table_rows | 表里所存多少行數據 |
avg_row_length | 平均行長度 |
data_length | 數據長度 |
max_data_length | 最大數據長度 |
index_length | 索引長度 |
data_free | 空間碎片 |
auto_increment | 做自增主鍵的自動增量當前值 |
create_time | 表的創建時間 |
update_time | 表的更新時間 |
check_time | 表的檢查時間 |
table_collation | 表的字符校驗編碼集 |
checksum | 校驗和 |
create_options | 創建選項 |
table_comment | 表的注釋、備注 |
阿里RDS的計算方法:
表空間=data_length+index_length+data_free
碎片率=data_free/表空間
碎片整理
如果您已經刪除了表的一大部分,或者如果您已經對含有可變長度行的表(含有VARCHAR, BLOB或TEXT列的表)進行了很多更改,則應使用
OPTIMIZE TABLE。被刪除的記錄被保持在鏈接清單中,后續的INSERT操作會重新使用舊的記錄位置。您可以使用OPTIMIZE TABLE來重新
利用未使用的空間,並整理數據文件的碎片。
在多數的設置中,您根本不需要運行OPTIMIZE TABLE。即使您對可變長度的行進行了大量的更新,您也不需要經常運行,每周一次或每月一次
即可,只對特定的表運行。
OPTIMIZE TABLE只對MyISAM, BDB和InnoDB表起作用。
注意,在OPTIMIZE TABLE運行過程中,MySQL會鎖定表。