MySQL的 data_free,表碎片整理
每當MySQL從你的列表中刪除了一行內容,該段空間就會被留空。而在一段時間內的大量刪除操作,會使這種留空的空間變得比儲存列表內容所使用的空間更大。
1.或者檢視某個表所佔空間,以及碎片大小。
select
table_name,engine,table_rows,data_length+index_length length,DATA_FREE from
information_schema.tables where TABLE_SCHEMA='db002';
或者
select
table_name,engine,table_rows,data_length+index_length length,DATA_FREE from
information_schema.tables where TABLE_SCHEMA='db002' and data_free !=0;
OPTIMIZE TABLE只對MyISAM, BDB和InnoDB表起作用。
對於MyISAM表,OPTIMIZE TABLE按如下方式操作:
1. 如果表已經刪除或分解了行,則修復表。
2. 如果未對索引頁進行分類,則進行分類。
3. 如果表的統計資料沒有更新(並且透過對索引進行分類不能實現修復),則進行更新。
對於BDB表,OPTIMIZE TABLE目前被對映到ANALYZE TABLE上。
對於InnoDB表,OPTIMIZE TABLE被對映到ALTER TABLE上,這會重建表。重建操作能更新索引統計資料並釋放成簇索引中的未使用的空間。
2、整理表的碎片
optimize table aaa_safe,aaa_user,t_platform_user,t_user;
提示該表不支援 optimize,但是下邊有顯示OK.其實已經執行成功了。5.6.X的版本,其實已經支援Innodb了。
整理完畢
針對以前版本:
大致意思是說innodb的資料庫不支援optimize,可以用
ALTER TABLE table.name ENGINE='InnoDB';
該方法會對舊錶以複製的方式新建一個新表,然後刪除舊錶。雖然這個過程是安全的,但是在進行操作時還是先進行備份為好
也可以在啟動資料庫的時候指定--skip-new或者--safe-mode選項來支援optimize功能
[root@wg ~]# service mysql start --skip-new
備註:
1.MySQL官方建議不要經常(每小時或每天)進行碎片整理,一般根據實際情況,只需要每週或者每月整理一次即可。
2.OPTIMIZE TABLE只對MyISAM,BDB和InnoDB表起作用,尤其是MyISAM表的作用最為明顯。此外,並不是所有表都需要進行碎片整理,一般只需要對包含上述可變長度的文字資料型別的表進行整理即可。
3.在OPTIMIZE TABLE執行過程中,MySQL會鎖定表。
4.預設情況下,直接對InnoDB引擎的資料表使用OPTIMIZE TABLE,可能會顯示「 Table does not support optimize, doing recreate + analyze instead」的提示資訊。這個時候,我們可以用mysqld --skip-new或者d --safe-mode命令來重啟MySQL,以便於讓其他引擎支援OPTIMIZE TABLE。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29893219/viewspace-1871911/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL表碎片整理MySql
- oracle表碎片整理Oracle
- MysqL碎片整理優化MySql優化
- ORACLE表空間的碎片整理Oracle
- 回收mysql表的碎片MySql
- MySQL關於表碎片整理OPTIMIZE TABLE操作的官方建議MySql
- Oracle資料表碎片整理Oracle
- mysql之 OPTIMIZE TABLE整理碎片MySql
- MySQL資料碎片的整理和分析MySql
- MySQL的表碎片處理MySql
- Oracle資料庫表碎片整理Oracle資料庫
- Oracle 整理表碎片、釋放表的空間Oracle
- Oracle 資料庫整理表碎片Oracle資料庫
- oracle表碎片以及整理(高水位線)Oracle
- MySQL碎片整理小節--例項演示MySql
- mysql表碎片的查詢自己回收MySql
- oracle 碎片整理Oracle
- Sqlserver的表沒有高水位但是有碎片的概念,sqlserver表的碎片的檢視和整理方法SQLServer
- oracle碎片整理方法Oracle
- ORACLE碎片整理一(轉載)Oracle
- ORACLE碎片整理二(轉載)Oracle
- Oracle 資料庫碎片整理Oracle資料庫
- Oracle資料庫碎片整理Oracle資料庫
- Oracle 表碎片Oracle
- windows10系統磁碟碎片整理在哪 win10如何開啟磁碟碎片整理WindowsWin10
- Oracle 資料庫碎片整理(zt)Oracle資料庫
- Oracle資料庫碎片整理(轉)Oracle資料庫
- MySQL 分割槽表知識整理MySql
- 硬碟加速和磁碟碎片整理軟體硬碟
- win10系統無法整理磁碟碎片提示已由其它程式建立了計劃磁碟碎片整理的解決方法Win10
- 表碎片的相關知識(ZT)
- mysql簡單的碎片清理指令碼MySql指令碼
- 表空間碎片檢測
- oracle 表碎片太多的處理辦法Oracle
- 為什麼Linux不需要碎片整理?Linux
- 教你用Ghost整理系統磁碟碎片(轉)
- win10怎麼禁用磁碟整理_win10關閉磁碟碎片整理的方法Win10
- java/android 做題中整理的碎片小貼士(4)JavaAndroid