欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL delete刪除數(shù)據(jù)后釋放磁盤空間的操作方法

 更新時間:2022年05月06日 16:55:58   作者:幸福丶如此  
這篇文章主要介紹了MySQL delete刪除數(shù)據(jù)后,釋放磁盤空間,文中給大家介紹了優(yōu)化表空間的多種方法,每種方法給大家介紹的非常詳細,需要的朋友可以參考下

當 MySQL 數(shù)據(jù)庫服務(wù)刪除部分數(shù)據(jù)后;有些情況下這些數(shù)據(jù)占用的存儲空間會釋放掉,有些情況這些存儲空間則不會釋放。以下是對這種情況的簡單說明:

一、刪除表|清空數(shù)據(jù)表

當執(zhí)行刪除數(shù)據(jù)表或者清空數(shù)據(jù)表的全部數(shù)據(jù)操作時,都會釋放掉相應(yīng)的磁盤存儲空間。

drop table table_name;
truncate table table_name;

在MyISAM和InnoDB(innodb_file_per_table)存儲引擎中,數(shù)據(jù)信息存在在單個文件中。刪除表操作和清空數(shù)據(jù)表操作都會釋放空間。

二、刪除表數(shù)據(jù)

delete from table_name [where xxx];

使用delete刪除的時候,MySQL并沒有把數(shù)據(jù)文件刪除,而是將數(shù)據(jù)文件的標識位刪除,沒有整理文件,因此不會徹底釋放空間。被刪除的數(shù)據(jù)將會被保存在一個鏈接清單中,當有新數(shù)據(jù)寫入的時候,MySQL會利用這些已刪除的空間再寫入。即,刪除操作會帶來一些數(shù)據(jù)碎片,正是這些碎片在占用硬盤空間。

三、優(yōu)化表空間

方法一:

optimize table table_name ;

當表數(shù)據(jù)被大量刪除后,釋放占用的空間就變得很有必要了。會明顯的提高查詢速度。使用 optimize table。被刪除的記錄被保持在鏈接清單中,后續(xù)的 insert 操作會重新使用舊的記錄位置。您可以使用 optimize table 來重新利用未使用的空間,并整理數(shù)據(jù)文件的碎片。optimize 適用于InnoDB和MyISAM存儲引擎。

查看表占用硬盤空間大小的SQL語句如下:(默認用M做展示單位)

SELECT TABLE_NAME, (DATA_LENGTH+INDEX_LENGTH)/1048576 as size_Mb, TABLE_ROWS FROM information_schema.tables WHERE TABLE_SCHEMA='wow_tencent_1' AND TABLE_NAME='user'

方法二:

alter table tab_name  ENGINE = 'InnoDB';

注意:該操作執(zhí)行的時候會把該表格先寫入一個tmp臨時表,所以磁盤剩余空間必須大于表空間,否則會執(zhí)行失敗。

方法三:
先將整個表的結(jié)構(gòu)和數(shù)據(jù)導(dǎo)出來,刪除整個表,再創(chuàng)建表,最后導(dǎo)入數(shù)據(jù)。生產(chǎn)環(huán)境不建議用這個方法。

到此這篇關(guān)于MySQL delete刪除數(shù)據(jù)后,釋放磁盤空間的文章就介紹到這了,更多相關(guān)MySQL delete釋放空間內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論