- 論壇徽章:
- 2
|
本帖最后由 cenalulu 于 2012-12-20 09:58 編輯
今天遇到的問題:
一個表,大小50G,數(shù)據(jù)3千萬條;
新數(shù)據(jù)插入頻繁,讀取很少;
要保證寫入/查詢的效率,需要清空已經(jīng)存在的數(shù)據(jù).
提議有兩種辦法:
1.truncate
2.rename
最初我認(rèn)為rename是把數(shù)據(jù)copy到臨時表.今天做了如下測試,發(fā)現(xiàn)并非這樣.
測試:
1.在test庫中,有t1,t2表.
2.執(zhí)行- 21:52:37 127.0.0.1:3306 test>rename table t1 to t2;
- ERROR 1050 (42S01): Table 't2' already exists
復(fù)制代碼 3.把t1表刪除,再次執(zhí)行- 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)
復(fù)制代碼 4.將t1還原,并且把t2刪除,執(zhí)行rename命令,結(jié)果:正確執(zhí)行.
但是查看.frm文件和.ibd文件,都是最新的.
疑問:
rename 操作,如果不涉及任何數(shù)據(jù)的更改,而只是簡單的更改.frm文件,為何也修改了.ibd文件
|
|