0
点赞
收藏
分享

微信扫一扫

Mysql大表删除的一种方法

女侠展昭 2022-02-24 阅读 75

影响

直接drop table,mysql会将表结构,表数据,包括服务器上的磁盘文件,势必会造成大量的IO占用

  1. 首先会从缓冲池中删除,innodb会维护一个全局独占锁在table cache上,会影响整个实例的的数据查询
  2. 删除服务器上的磁盘文件,如果是一个很大的文件,会占用大量的磁盘IO

原理

表原理

mysql必须开启独立表空间参数

innodb_file_per_table=on

共享表空间

某一个数据库的所有的表数据,索引文件全部放在一个文件中

独立表空间

每一个表都以独立方式来部署,每个表都有一个.frm表描述文件,还有一个.ibd文件。

  • .frm文件: 保存了每个表的元数据,包括表结构的定义等,该文件与数据库引擎无关。
  • .ibd文件: 保存了每个表的数据和索引的文件
  • .opt文件 保存了表的字符集

删除原理

利用ln 硬链接和和truncate 进行文件的截断删除

  • 利用ln进行硬链接,就是一个文件被两个文件索引连接,mysql在调用os进行删除物理文件时,删除的不是本身的物理文件,而是删除的硬连接文件,只有当一个连接时才会被删除
  • truncate 可以对文件进行制定size的进行删除,从而减少io的产生

操作实践

1、建立硬连接

ln sbtest1.ibd sbtest1.ibd.hdlk

[root@test.a1-104-143.dev.unp dytest]# du -sh * 
4.0K db.opt
12K sbtest1.frm
3.9G sbtest1.ibd
[root@test.a1-104-143.dev.unp dytest]# ls
db.opt sbtest1.frm sbtest1.ibd sbtest1.ibd.hdlk
[root@test.a1-104-143.dev.unp dytest]# ls -la
total 8044572
drwxr-x--- 2 mysql mysql 78 Apr 29 15:21 .
drwxr-xr-x 6 mysql mysql 4096 Apr 29 14:38 ..
-rw-r----- 1 mysql mysql 67 Apr 29 14:38 db.opt
-rw-r----- 1 mysql mysql 8632 Apr 29 15:08 sbtest1.frm
-rw-r----- 2 mysql mysql 4118806528 Apr 29 15:19 sbtest1.ibd
-rw-r----- 2 mysql mysql 4118806528 Apr 29 15:19 sbtest1.ibd.hdlk
[root@test.a1-104-143.dev.unp dytest]# ls -la

2、drop大表

dba_testuser@10.1.104.143:15002) [dytest]> drop table sbtest1;
Query OK, 0 rows affected (0.39 sec)

drop 表后 物理文件还是存在的

total 4022284
drwxr-x--- 2 mysql mysql 42 Apr 29 15:23 .
drwxr-xr-x 6 mysql mysql 4096 Apr 29 14:38 ..
-rw-r----- 1 mysql mysql 67 Apr 29 14:38 db.opt
-rw-r----- 1 mysql mysql 4118806528 Apr 29 15:19 sbtest1.ibd.hdlk

3、删除物理文件

利用truncate减少文件大小的影响,慢慢删除

[root@test.a1-104-143.dev.unp dytest]# truncate -s 1G sbtest1.ibd.hdlk 
[root@test.a1-104-143.dev.unp dytest]# ls
db.opt sbtest1.ibd.hdlk
[root@test.a1-104-143.dev.unp dytest]# du -sh *
4.0K db.opt
1.1G sbtest1.ibd.hdlk

删除脚本如下

for i in `seq 2194 -10 10 `; 
do
sleep 2
$TRUNCATE -s ${i}G /data/mysql/dytest/sbtest1.ibd.hdlk
done
rm -rf /data/mysql/dytest/sbtest1.ibd.hdlk

可以避免直接删除一个大文件造成的io影响

举报

相关推荐

0 条评论