MySQL 可以壓縮或回收磁碟空間嗎
MYSQL 的資料庫中的表,在使用中因為插入,刪除或者UPDATE 等會產生頁面的碎片,而碎片多了就會產生頁面中不可用的資料空白,空白多了就會導致實際上儲存的資料和在檔案上生成的資料檔案之間的差異,導致磁碟空間浪費的問題。
MYSQL 的資料庫中表支援單表單檔案的特性,而我們的optimize table 主要的面對表在大量UPDATE 或者刪除資料後的最佳化工作。
首先我們可以確認optimize table 對於資料庫是有必要操作的,尤其針對業務中對錶操作中充斥了大量的insert ,update,delete 等操作,使用這個命令可以讓資料庫重新的組織資料和重組,並且已經可以被釋放的磁碟空間可以在釋放給作業系統。
在很多情況下,資料表本身可能根本不大,但是在佔用作業系統層面上,佔用的資料量很大。
在這樣的情況下,我們就需要針對這樣的表進行清理的工作了,optimize table 主要面對在資料表中存在的varchar ,varbinary,blob, text 等大量應用在表中,並且被清理後的情況也適合使用 optimize table.
為什麼要進行表的收縮的工作,主要的原因如下
1 表佔用的資料空間,比實際的資料應該佔用的表空間要大
2 表在全表掃描的過程中,比碎片少的資料表,掃描的時間明顯長,尤其在進行如 count 操作等
3 影響資料插入的效能,因為資料在碎片中插入資料的效能明顯比在沒有碎片的頁面中插入資料的速度要快。
針對INNODB 的表,我們在操作中會直接得到如下的資訊
這是因為 optimize table 在INNODB表中的操作轉變為
alter table table_name engine = 'innodb';
analyze table table_name;
或者
alter table table_name force;
analyze table table_name;
這個操作中會鎖表,產生一個新的表,並將資料複製到新表中,在將老表清理掉,新表改為原來的表名。
要進行這個操作,需要如下的一些工作
在資料庫安裝之初,我們們的 innodb_file_per_table = 1
同時需要對錶的data_free 進行,檢查,如果 data free 比較大的情況下對比實際的表,就說明表中的碎片是比較大,需要進行資料的整理。
另一種對錶得資料壓縮的方式也可以將表進行處理,直接將表的資料格式轉變為 compressed ,透過這樣的方式對於一些 varchar, text blob 等欄位型別較多的表進行空間方面的縮減。但 如果表中的欄位都是整形或數值型的狀態,那麼表基本上就不會被壓縮。
來自 “ AustinDatabases ”, 原文作者:carol11;原文連結:https://mp.weixin.qq.com/s/QO8MSMGOqbIRHaQOiDOYjQ,如有侵權,請聯絡管理員刪除。
相關文章
- 通過壓縮 Docker 桌面 WSL 2 VM 回收大量磁碟空間 - NickDocker
- 透過壓縮Docker桌面WSL 2 VM回收大量磁碟空間 - NickDocker
- WSL 回收未使用的磁碟空間
- ORACLE ASM的SSD磁碟空間回收分析OracleASM
- mysql收縮共享表空間MySql
- linux檢視mysql佔用磁碟空間LinuxMySql
- 如何解決Linux磁碟空間過大或不足?Linux
- 磁碟空間不足
- UNDO表空間空間回收及切換
- iOS拆分,合併靜態庫以壓縮打包空間iOS
- 如何檢查Mac磁碟空間,mac磁碟空間其他怎麼清理Mac
- linux限定使用者或組對磁碟空間的使用Linux
- mysql共享表空間擴容,收縮,遷移MySql
- 儲存空間緊張?來看 TDengine TSZ 壓縮演算法如何顯著提升壓縮率演算法
- win10 如何修改磁碟空間 win10修改磁碟空間方法Win10
- Oracle 擴充磁碟空間Oracle
- 一個空間可以放幾個網站嗎網站
- lnmp下如何關閉Mysql日誌保護磁碟空間LNMPMySql
- 壓縮資料以節省空間和提高速度(轉)
- MySQL 磁碟空間滿導致表空間相關資料檔案損壞故障處理MySql
- MySQL 5.6的表壓縮MySql
- mysql壓縮解決方案MySql
- MYSQL壓縮表測試MySql
- ubuntu 擴充套件磁碟空間Ubuntu套件
- docker磁碟空間清理辦法Docker
- [20230201]磁碟空間爆滿.txt
- MySQL 5.7新特性之線上收縮undo表空間MySql
- Mysql InnoDB刪除資料後釋放磁碟空間的方法MySql
- windows10磁碟空間不足怎麼清理_win10磁碟空間清理的方法WindowsWin10
- MySQL空間最佳化(空間清理)MySql
- MySQL 5.7的表刪除資料後的磁碟空間釋放MySql
- linux檢視剩餘磁碟空間Linux
- ORACLE ASM磁碟組空間溢位OracleASM
- [20201104]磁碟空間消耗在哪裡.txt
- 沒有磁碟空間 No space left on devicedev
- lsof |grep deleted 釋放磁碟空間delete
- 伺服器磁碟空間滿了伺服器
- [20211029]udump磁碟空間暴漲.txt