MySQL修改表名:重命名RENAME

RENAME命令

RENAME命令用于修改表的名称,命令格式:rename table 原表名 to 新表名;
例如:将user表改成user_info

rename table user to user_info;

在这里插入图片描述

使用场景

第一个场景重命名

最常用的场景就是使用rename修改表名。

rename table user to user_info;

使用rename做数据处理

场景:线上表记录日志,定期会删除日志记录,只保留最近一个月的数据。但是delete并不会释放表空间,导致表越来越大,所以需要做下表的空间碎片整理。表碎片整理其实有很多方式,但是由于optimize table会锁表,而且影响线上业务,所以不能用。只能通过其他方式来处理线上数据了。

这里就是借用了rename指令,首先线上核心业务已经C端大流量业务不建议使用

操作过程,以处理execute_log表为例:

  1. 建一张临时表execute_log_new
  2. 表如果是自增主键,修改execute_log_new的自增id,因为后面要做历史数据同步
  3. 修改表名execute_log改成execute_log_bk
  4. 修改表名execute_log_new改成execute_log
    这样线上流量就切到新表了,然后再根据需要去处理历史数据,比如同步最近一个月数据到新建的表里。
CREATE TABLE execute_log_new like api_execute_log;
ALTER TABLE execute_log_new AUTO_INCREMENT = 1102293531;
RENAME TABLE execute_log to execute_log_bk_20240712;
RENAME TABLE execute_log_new to execute_log;

查看表空间大小语句:

use information_schema;
select concat(round(sum(data_length/1024/1024),2),'MB') as data from tables where table_schema='xxxxx' and table_name='execute_log';

修改大表索引

该场景的解决方案也适用于线上修改索引会锁表的场景,可以先用临时表,索引修改完之后,再将临时表数据同步回原表。

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值