原理:
永久連結基礎
當多個檔案共同指向同一inode、inode連結數N>1、刪除任何一個檔案都是巨快
因為、此時刪除的僅僅是指向inode的指標
而當N=1時、則不一樣了、此時刪除的檔案相關的所有資料區塊、所以慢
測試:
root@ # ln stock.ibd stock.id.hdlkroot@ # ls stock.* -l-rw-rw—- 1 mysql mysql 9196 Apr 14 23:03 stock.frm-rw-r–r– 2 mysql mysql 19096666112 Apr 15 09:55 stock.ibd-rw-r–r– 2 mysql mysql 19096666112 Apr 15 09:55 stock.id.hdlk你會發現stock.ibd的INODES屬性變成了2;下面我們繼續來刪表。root@127.0.0.1 : test 21:44:37> show table status like ‘stock’ \G*************************** 1. row ***************************Name: stockEngine: InnoDBVersion: 10Row_format: CompactRows: 49916863Avg_row_length: 356Data_length: 17799577600Max_data_length: 0Index_length: 1025507328Data_free: 4194304Auto_increment: NULLCreate_time: 2011-05-18 14:55:08Update_time: NULLCheck_time: NULLCollation: utf8_general_ciChecksum: NULLCreate_options:Comment:1 row in set (0.23 sec)root@127.0.0.1 : test 21:39:34> drop table stock ;Query OK, 0 rows affected (0.99 sec)1秒不到就刪除完成; 也就是DROP TABLE不用再HANG這麼久了。但table是刪除了,資料檔案還在,所以你還需要最後資料檔案給刪除。root # lltotal 19096666112-rw-r–r– 2 mysql mysql 19096666112 Apr 15 09:55 stock.id.hdlkroot # rm stock.id.hdlk
最後一步刪除原始大檔案也可以選擇rsync來刪除、比rm快多了:rsync秒刪大檔案
By DBA_WaterBin
2013-07-25
Good Luck