MySQL在Linux下利用硬鏈結快速刪除大表

2021-09-21 01:14:34 字數 1213 閱讀 5079

在清理整個大表時,我們推薦使用drop,而非delete。但是如果表實在太大,即使是drop,也需要消耗一定的時間。這時可以利用linux的硬連線來快速刪除大表,操作過程如下:

有乙個大表test,共有4194304行資料,表空間檔案大小為1.3g

mysql> select count(*) from test;

+----------+

| count(*) |

+----------+

| 4194304 |

+----------+

1 row in set (15.20 sec)

mysql> show create table test\g

*************************** 1. row ***************************

table: test

create table: create table `test` (

`id` int(11) default null,

`name` varchar(255) default null

) engine=innodb default charset=utf8mb4

1 row in set (0.12 sec)

[root@master sam]# du -sh test.ibd

1.3g test.ibd

1.首先建立硬鏈結

ln test.idb test.idb.hl

ln test.frm test.frm.hl

2.刪除test表

drop table test;
3.會發現,drop操作速度很快,原來的test.idb和test.frm不見了,但是硬鏈結檔案還在,所以真正的釋放磁碟空間,需要刪除test.idb.hl和test.frm.hl。

快速刪除原理:

首先硬鏈結建立的檔案test.idb.hl,和原始檔test.idb是指向同乙個inode。而mysql的drop操作,實際上是刪除test表對應的.idb和.frm檔案,也就是test.idb和test.frm。而linux在有硬連線的情況下,刪除其中原始檔會非常快,因為只是刪除了inode的指標,實際的資料還儲存在inode裡。所以磁碟空間並沒有真正釋放,需要將硬連線檔案也刪除,才是真正的釋放磁碟空間。

在linux下mount windows硬碟

在windows下共享需要允許訪問的資料夾 1.關閉windows防火牆 2.確認windows使用者名稱和密碼正確 3.執行命令mount t cifs windows ip share path mount path o username cw,password 1,rw 然後在linux下 使...

在linux下安裝mysql

在linux環境中安裝mysql需要 mysql standard 4.0.24 pc linux gnu i686.tar.gz這個檔案 mysql standard 4.0.24 pc linux gnu i686.tar.gz 是mysql4.0.24版本的安裝檔案,是乙個二進位制的壓縮包,所...

在linux下安裝mysql

在linux環境中安裝mysql需要 mysql standard 4.0.24 pc linux gnu i686.tar.gz這個檔案 可以從mysql standard 4.0.24 pc linux gnu i686.tar.gz 是mysql4.0.24版本的安裝檔案,是乙個二進位制的壓縮...