mysql刪除資料後釋放磁碟空間

2021-09-17 07:34:05 字數 1445 閱讀 6288

drop table table_name立刻釋放磁碟空間 ,不管是 innodb和myisam ;

truncate table table_name立刻釋放磁碟空間 ,不管是 innodb和myisam;

delete from table_name刪除表的全部資料,對於myisam 會立刻釋放磁碟空間 ,而innodb 不會釋放磁碟空間;

delete from table_name where xx帶條件的刪除, 不管是innodb還是myisam都不會釋放磁碟空間;

delete操作後使用optimize table table_name釋放磁碟空間,優化表期間會鎖定表,所以要在空閒時段執行optimize table,測試十幾個g資料的表執行optimize table 大概20多分鐘。

注:delete刪除資料的時候,mysql並沒有把資料檔案刪除,而是將資料檔案的標識位刪除,沒有整理檔案,因此不會徹底釋放空間。被刪除的資料將會被儲存在乙個鏈結清單中,當有新資料寫入的時候,mysql會利用這些已刪除的空間再寫入。即,刪除操作會帶來一些資料碎片,正是這些碎片在占用硬碟空間。

optimize table命令優化表,該命令會重新利用未使用的空間,並整理資料檔案的碎片;該命令將會整理表資料和相關的索引資料的物理儲存空間,用來減少占用的磁碟空間,並提高訪問表時候的io效能;但是具體對錶產生的影響是依賴於表使用的儲存引擎的。該命令對檢視無效。

使用optimize table table_name出現table does not support optimize, doing recreate + analyze instead 的解決辦法:

>

/usr/

local

/mysql/bin/mysqladmin -uroot -p shutdown

--停止mysql

>

/usr/

local

/mysql/bin/mysqld --skip-new & --啟動mysql

>mysql -uroot -p --在伺服器上連線mysql

mysql>

use db_name;

刪除資料並執行了optimize table釋放了磁碟空間;optimize命令優化表 不要頻繁操作,另外還發現執行optimize命令 innodb 引擎的資料庫下ibtmp1 檔案由原來的幾個g優化成12m了。

但如果資料每天都大量插入,刪除資料後不執行optimize tableinsert 資料的時候會占用已經刪除那部分資料的空間,資料檔案所占用的磁碟空間短時間並不會增長,所以要減少資料檔案占用磁碟空間,可以對錶進行壓縮。

MYSQL資料刪除資料,物理空間沒釋放

當您的庫中刪除了大量的資料後,您可能會發現資料檔案尺寸並沒有減小。這是因為刪除操作後在資料檔案中留下碎片所致。optimize table 是指對錶進行優化。如果已經刪除了表的一大部分資料,或者如果已經對含有可變長度行的表 含有 varchar blob 或 text 列的表 進行了很多更改,就應該...

MYSQL資料刪除資料,物理空間沒釋放

當您的庫中刪除了大量的資料後,您可能會發現資料檔案尺寸並沒有減小。這是因為刪除操作後在資料檔案中留下碎片所致。optimize table 是指對錶進行優化。如果已經刪除了表的一大部分資料,或者如果已經對含有可變長度行的表 含有 varchar blob 或 text 列的表 進行了很多更改,就應該...

Oracle 刪除資料後釋放資料檔案所佔磁碟空間

oracle 刪除資料後釋放資料檔案所佔磁碟空間 測試的時候向資料庫中插入了大量的資料,測試完成後刪除了測試使用者以及其全部資料,但是資料檔案卻沒有縮小。經查閱資料之後發現這是 oracle 高水位 所致,那麼怎麼把這些資料檔案的大小降下來呢?解決辦法如下 概念 表空間的相關知識請見這裡,詳細的介紹...