truncate table AND rename table + create table测试

处理线上项目遗留的垃圾表(俗称阑尾工程)时会出现:

1.数据不需要了,但是还很大,可以找个空闲的时间直接truncate掉

2.代码还没有清理,数据还有写入,他们还是需要表结构的,你要是rename,会引起程序报错。


但是我们知道truncate table 的本质就是drop table + create table,而且DDL是不涉及事务的,

那我们是不是可以 rename + create来做这个操作呢?


先说结论:

不可以

环境:



测试如下:

1.我们用sysbench来模拟线上的读写,sysbench脚本如下:

 sysbench /usr/share/sysbench/oltp_read_write.lua --mysql-host=127.0.0.1  --mysql-socket=/data/mysqldata/mysql.sock  --mysql-port=3306 --mysql-user=root --mysql-db=test  --table_size=10000000 --tables=2 prepare

2.执行truncate



我们发现sysbench并没有报错。count一下发现数据也在正常写入



现在测试rename table + create table ,这里我们用navicat 一起执行;



发现sysbench 报错了 找不到这个表,

虽然执行很快但是对于由业务操作的表来说 第二种方法还是不行的。




扩展:

虽然sysbench报错了但是sysbench并没有退出 , 应该是在尝试连接之后继续准备第二个表的数据。


如上图

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值