在mysql中遇到一個大表,大概有17G左右,在對這個表進行查詢、修改時均遇到了很大的困難,於是想着刪除這張表。通常的刪除操作可以通過delete、drop、truncate操作,試了這三個命令,但是最終都以失敗,都無法刪除此表,最后使用下面的方式最終刪除。(linux下)
1、建立硬鏈接
找到mysql的數據文件,找到這張表在硬盤上的名稱,我的是tmplst.frm和tmplst.ibd,通過查看tmplst.ibd的大小到了17G左右,這就是無法刪除的原因。其中tmplst是表名。
在這個文件夾下,為tmplst,frm和tmplst.ibd分別建立硬鏈接,
ln tmplst.frm tmplst.frm.h ln tmplst.ibd tmplst.ibd.h
這樣的話就成功的建立了兩個硬鏈接。
2、刪除表
在mysql中使用drop命令刪除表
drop table tmplst;
這時發現刪除非常快,不到一分鍾刪除完成。
3、刪除硬鏈接文件
在硬盤上刪除新建的硬鏈接。分別刪除tmplst.frm.h和tmplst.ibd.h。
rm -rf tmplst.frm.h rm -rf tmplst.idb.h
最后,成功了刪除一張大表(17G左右)。
有不當之處,歡迎指正,感謝!