- 作者简介:大厂高级 Java 开发工程师
- 称 号:CSDN 博客专家✨、阿里云博客专家
- 公众号:云服务小管家。免费的阿里云服务器☁ 和云环境直接使用
- 生活:专注于后端技术分享迷茫时可来瞅瞅码农轨迹♂️
- 服务:提供模拟面试和简历辅导,提供生产项目。内推可私信✉
- 卷卷群:可以和大家一起学习,一起进步
- 如果感觉博主的文章还不错的话,请三连支持一下博主哦
最近在做一个项目,除了验证功能,还需要验证性能,所以前期导入了一批数据。等发布前会把这个表给清理掉。所以涉及一个大表删除的问题。
当时我的诉求:快速删干净。
不可取,因为是贼大事务,要规避
delete from tableName limit 1000W
本身就是一个大事务,没有执行过,不清楚什么后果,但是感觉后果会很严重。
delete from tableName limit 1000条
sleep 0.1秒 //让binlog追一下
推荐,因为这种方式可控,但是速度慢。
使用TRUNCATE 来清理表,优点如下:
使用TRUNCATE 来清理表,即方式3。
但是遇到了一个问题,使用TRUNCATE 没有binlog,导致下游数仓出现了问题。
如果有下游消费binlog,那就要一行一行的删;如果没有下游,那么可以使用TRUNCATE