mysql删除表數據進度0%?最近遇到了一個坑,MySQL數據庫服務器硬盤容量告警,而且因為非技術原因,還不能追加硬盤,我來為大家科普一下關于mysql删除表數據進度0%?以下内容希望對你有幫助!
最近遇到了一個坑,MySQL數據庫服務器硬盤容量告警,而且因為非技術原因,還不能追加硬盤。
通過監控發現,磁盤IO一直100%。直接影響就是系統處理時間越來越長,接口響應耗時也越來越多。
drop or truncate table 失敗經過分析,發現mysql業務數據庫裡有好幾張大表,而且這幾張大表行數都在5000萬以上,文件大小都在100G和150G之間。
因為這些表都是備份表,第一反應就是找DBA直接清理掉這些表。潛意識裡以為drop table 和 truncate table效率很高,都會快速完成,但事實上不是。但意外的是,在執行drop table時,直接導緻數據庫挂起了,而且還發生了主從切換。
第一次嘗試失敗。
通過Linux硬鍊接删除第一次失敗反應出來的問題是,如果數據文件過大,drop table操作也得慎用。
那我們可以在drop table之前,想辦法把數據文件邏輯清空。比如Linux硬連接的方式,具體步驟如下(假如目标表名是test):
ln test.ibd test.ibd.hdlk
drop table test;
此時,磁盤上真實的數據其實沒删除,但數據庫裡的表,已經删除了。
rm test.ibd.hdlk
到此,數據就能快速清理成功了。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!