mysql-碎片率和空間優化


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會鎖定表。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM