- 论坛徽章:
- 2
|
本帖最后由 cenalulu 于 2012-12-20 09:58 编辑
今天遇到的问题:
一个表,大小50G,数据3千万条;
新数据插入频繁,读取很少;
要保证写入/查询的效率,需要清空已经存在的数据.
提议有两种办法:
1.truncate
2.rename
最初我认为rename是把数据copy到临时表.今天做了如下测试,发现并非这样.
测试:
1.在test库中,有t1,t2表.
2.执行- 21:52:37 127.0.0.1:3306 test>rename table t1 to t2;
- ERROR 1050 (42S01): Table 't2' already exists
复制代码 3.把t1表删除,再次执行- 21:52:37 127.0.0.1:3306 test>rename table t1 to t2;
- ERROR 1017 (HY000): Can't find file: './test/t1.frm' (errno: 2)
复制代码 4.将t1还原,并且把t2删除,执行rename命令,结果:正确执行.
但是查看.frm文件和.ibd文件,都是最新的.
疑问:
rename 操作,如果不涉及任何数据的更改,而只是简单的更改.frm文件,为何也修改了.ibd文件
|
|