免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 12983 | 回复: 14
打印 上一主题 下一主题

【分享】MySQL中rename命令浅析 [复制链接]

论坛徽章:
2
2015年迎新春徽章
日期:2015-03-04 09:55:28IT运维版块每日发帖之星
日期:2016-07-29 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-12-17 22:19 |只看该作者 |倒序浏览
本帖最后由 cenalulu 于 2012-12-20 09:58 编辑

今天遇到的问题:
一个表,大小50G,数据3千万条;
新数据插入频繁,读取很少;
要保证写入/查询的效率,需要清空已经存在的数据.

提议有两种办法:
1.truncate
2.rename

最初我认为rename是把数据copy到临时表.今天做了如下测试,发现并非这样.
测试:
1.在test库中,有t1,t2表.
2.执行
  1. 21:52:37 127.0.0.1:3306 test>rename table t1 to t2;        
  2. ERROR 1050 (42S01): Table 't2' already exists
复制代码
3.把t1表删除,再次执行
  1. 21:52:37 127.0.0.1:3306 test>rename table t1 to t2;        
  2. ERROR 1017 (HY000): Can't find file: './test/t1.frm' (errno: 2)
复制代码
4.将t1还原,并且把t2删除,执行rename命令,结果:正确执行.
但是查看.frm文件和.ibd文件,都是最新的.

疑问:
rename 操作,如果不涉及任何数据的更改,而只是简单的更改.frm文件,为何也修改了.ibd文件

论坛徽章:
2
摩羯座
日期:2014-05-29 17:38:40数据库技术版块每日发帖之星
日期:2016-08-05 06:20:00
2 [报告]
发表于 2012-12-18 17:45 |只看该作者
个人理解rename 的过程:
1.lock table a
2.create table b (同结构)
3.insert into b select * from a
4.unlock and drop table a

论坛徽章:
2
2015年迎新春徽章
日期:2015-03-04 09:55:28IT运维版块每日发帖之星
日期:2016-07-29 06:20:00
3 [报告]
发表于 2012-12-18 20:35 |只看该作者
回复 2# devilkin0312

不是这个过程.应该没有数据导出导入.直接修改.frm文件
   

论坛徽章:
2
摩羯座
日期:2014-05-29 17:38:40数据库技术版块每日发帖之星
日期:2016-08-05 06:20:00
4 [报告]
发表于 2012-12-19 12:06 |只看该作者
回复 3# ning_lianjie


    刚刚用innodb,mysiam测试了下,这个过程确实没有复制数据的操作,只是对表相关文件(.frm,.myd,myi)和元数据信息进行修改。

论坛徽章:
2
2015年迎新春徽章
日期:2015-03-04 09:55:28IT运维版块每日发帖之星
日期:2016-07-29 06:20:00
5 [报告]
发表于 2012-12-19 15:00 |只看该作者
回复 4# devilkin0312

对于大表的清理工作.为了不影响新数据写入.可以用rename来替换truncate命令.

   

论坛徽章:
9
每日论坛发贴之星
日期:2016-01-04 06:20:00数据库技术版块每日发帖之星
日期:2016-01-04 06:20:00每日论坛发贴之星
日期:2016-01-04 06:20:00数据库技术版块每日发帖之星
日期:2016-01-04 06:20:00IT运维版块每日发帖之星
日期:2016-01-04 06:20:00IT运维版块每日发帖之星
日期:2016-01-04 06:20:00综合交流区版块每日发帖之星
日期:2016-01-04 06:20:00综合交流区版块每日发帖之星
日期:2016-01-04 06:20:00数据库技术版块每周发帖之星
日期:2016-03-07 16:30:25
6 [报告]
发表于 2012-12-20 09:59 |只看该作者
所以production的大表变更也是这么做的。
pt-online-schema-change 用的也是这个原理

论坛徽章:
2
2015年迎新春徽章
日期:2015-03-04 09:55:28IT运维版块每日发帖之星
日期:2016-07-29 06:20:00
7 [报告]
发表于 2012-12-20 14:44 |只看该作者
回复 6# cenalulu

对了,请教个问题,上T的表,进行备份有没有好的方式.
有没有热备,但是不会太占资源的工具,时间长点无所谓.
   

论坛徽章:
9
每日论坛发贴之星
日期:2016-01-04 06:20:00数据库技术版块每日发帖之星
日期:2016-01-04 06:20:00每日论坛发贴之星
日期:2016-01-04 06:20:00数据库技术版块每日发帖之星
日期:2016-01-04 06:20:00IT运维版块每日发帖之星
日期:2016-01-04 06:20:00IT运维版块每日发帖之星
日期:2016-01-04 06:20:00综合交流区版块每日发帖之星
日期:2016-01-04 06:20:00综合交流区版块每日发帖之星
日期:2016-01-04 06:20:00数据库技术版块每周发帖之星
日期:2016-03-07 16:30:25
8 [报告]
发表于 2012-12-20 15:01 |只看该作者
回复 7# ning_lianjie

用物理备份 xtrabackup 加上 io-throttle 参数控制对磁盘的占用
   

论坛徽章:
2
2015年迎新春徽章
日期:2015-03-04 09:55:28IT运维版块每日发帖之星
日期:2016-07-29 06:20:00
9 [报告]
发表于 2012-12-20 15:43 |只看该作者
回复 8# cenalulu
3q ,去测试一下,看看效果.

   

论坛徽章:
0
10 [报告]
发表于 2012-12-20 17:38 |只看该作者
回复 4# devilkin0312

UP!
看源码中也是直接对数据文件直接重命名,而不是insert


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP