我是靠谱客的博主 碧蓝金针菇,最近开发中收集的这篇文章主要介绍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并没有退出 , 应该是在尝试连接之后继续准备第二个表的数据。
如上图
最后
以上就是碧蓝金针菇为你收集整理的truncate table AND rename table + create table测试的全部内容,希望文章能够帮你解决truncate table AND rename table + create table测试所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复