【紧急求助】生产环境 TIDB DROP删除一个12T的大表对业务有没有影响?

【 TiDB 使用环境】生产环境
【 TiDB 版本】5.4
drop table一个12T的大表,对业务有没有影响?
有没有类似MYSQL大表drop使用硬链接的方式删除的?

肯定有影响的,因为有GC机制和MVCC

如果你需要删除大量行(数万或更多)的时候,建议使用一个迭代,每次都只删除一部分数据,直到删除全部完成。这是因为 TiDB 单个事务大小限制为 txn-total-size-limit(默认为 100MB)。你可以在程序或脚本中使用循环来完成操作。

https://docs.pingcap.com/zh/tidb/stable/dev-guide-delete-data#批量删除

delete删除12T数据,疯了么 ,这么干数据库波动才大

drop操作。达到GC时间后会清理sst 文件,可能引起一定IO,之后会有大量的空region,pd会调度region合并消耗些资源。整体影响不大

1 个赞

理论上是没影响,建议业务低谷期drop

1 个赞

他是drop

  • 如果你需要删除表内的所有数据,请勿使用 DELETE 语句,而应该使用 TRUNCATE 语句。

我回复的楼上那个建议delete删除那个

必须要做的事,肯定要做。放低峰期执行。但是对tikv执行GC会有性能影响

tidb.drop和truncate应该那啥区别吧

那不还有非事务 DML 嘛 :joy:

不建议一次性执行这么大的操作,可以弄个定时器每天凌晨固定时间多线程异步删除,等数据量下来后在执行truncate table操作

应该有影响,删除表和里面的数据,毕竟需要占用cpu和内存资源

是drop table的删除

drop table表,不用delete。这样是不是也会gc和io卡死?

在执行DROP TABLE操作时,会有大量连续的数据被删除。tidb会将这些待删除的区间及删除操作的时间戳记录下来,并不会立即物理删除。gc阶段:Delete Ranges 会将这些时间戳在 safe point 之前的区间进行快速的物理删除。物理删除主要是消耗磁盘io,对cpu内存影响较小

drop是磁盘IO的一下子拉高,还是缓慢慢的drop。如果IO直接100%,那业务不就gg了吗?

我只drop过一百多亿行记录的表没啥影响,你这12t数据量太大了,没有人干过,不敢给你打包票,所以建议你业务低谷期干。

这么删一年都删不完。不信你测试下,1亿数据,开始删超级快,后面越来越慢,从几十毫秒一直到几秒一次

强烈不建议delete数据,tidb 的持续delete性能非常差,会越来越慢,而且硬盘数据量会激增,分分钟把硬盘写爆了