删除大表:

drop table  大表_硬链接

 

 

1、给对应表的ibd文件建立硬链接,因为表的数据和索引都在该文件中。
ln /home/work/status.ibd /home/work/status.ibd.hdlk
2、主库上删除表,那么该语句执行后会将status.ibd和status.frm文件删除。
drop table status;
# 在128G内存,2.5T的ssd上测试:
300G的ibd文件,则需要7秒
而1.2T的ibd文件,则需要48秒,因为innodb表有三个地方存储,分别是frm、ibd、ibdata1共享表空间,可能数据在ibdata1共享表空间中存放得比较多,从而更耗时。
3、删除硬链接文件
echo "" > /home/work/status.ibd.hdlk
rm -rf /home/work/status.ibd.hdlk

 

在执行该操作时,如果时间很长,中途杀掉该线程需要承受数据库挂掉的风险,回滚会将undo 空间打满而挂掉

 

 

 

#################################################################