MySQL delete刪除數(shù)據(jù)后釋放磁盤空間的操作方法
當 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)文章
MySQL中必須了解的13個關(guān)鍵字總結(jié)
這篇文章主要為大家詳細介紹了MySQL中必須了解學會的13個關(guān)鍵字,文中的示例代碼簡潔易懂,對我們掌握MySQL有一定的幫助,需要的可以了解下2023-09-09Mysql 5.7 服務(wù)下載安裝圖文教程(經(jīng)典版)
MySQL 5.7在諸多方面都進行了大幅的改進,主要在于安全性、靈活性、易用性、可用性和性能等幾個方面。這篇文章主要介紹了Mysql5.7服務(wù)下載安裝圖文教程(經(jīng)典版),需要的朋友可以參考下2016-09-09如何利用MySQL查詢varbinary中存儲的數(shù)據(jù)
varbinary 類型和char與varchar類型是相似的,他們是包含字節(jié)流而不是字符流,他們有二進制字符的集合和順序,他們的對比,排序是基于字節(jié)的數(shù)值進行的,本文給大家介紹如何利用MySQL查詢varbinary中存儲的數(shù)據(jù),感興趣的朋友一起看看吧2023-07-07淺析一個MYSQL語法(在查詢中使用count)的兼容性問題
本篇文章是對MYSQL語法(在查詢中使用count)的兼容性問題進行了詳細的分析介紹,需要的朋友參考下2013-07-07MySQL5.1主從同步出現(xiàn)Relay log read failure錯誤解決方法
這篇文章主要介紹了MySQL5.1主從同步出現(xiàn)Relay log read failure錯誤解決方法,需要的朋友可以參考下2014-07-07深入解析MySQL的事務(wù)隔離及其對性能產(chǎn)生的影響
這篇文章主要介紹了MySQL的事務(wù)隔離及其對性能產(chǎn)生的影響,在MySQL的優(yōu)化方面具有一定的借鑒意義,需要的朋友可以參考下2015-12-12一句命令完成MySQL的數(shù)據(jù)遷移(輕量級數(shù)據(jù))
有時候我們需要將數(shù)據(jù)庫遷移的本地,對于數(shù)據(jù)量不大的數(shù)據(jù)完全可以采用下面的命令實現(xiàn),如果數(shù)據(jù)量比較大,建議使用專業(yè)的工具,例如帝國備份王等2013-08-08解析MYSQL 數(shù)據(jù)庫導(dǎo)入SQL 文件出現(xiàn)亂碼的問題
本篇文章是對MYSQL數(shù)據(jù)庫導(dǎo)入SQL文件出現(xiàn)亂碼的問題進行了詳細的分析介紹,需要的朋友參考下2013-06-06