我使用 Mysql 5.5.. + INNODB 和 windows 服务器。
案例(先简单后真实):
我有 2 个 1GB 的表,名称为 new_car
和 car
表 1GB。
我每 10 小时用 new_car
表替换 car
表,而不是手动(通过代码自动)- 重要的是要快(真实网站数据)。
我读到(说在 innodb 中删除它的问题):http://www.mysqlperformanceblog.com/2011/02/03/performance-problem-with-innodb-and-drop-table/
解决方案一:
DROP TABLE car;
RENAME TABLE new_car TO car;
解决方案2(在最后进行drop - 也许它不会阻止在drop期间发生的表访问):
RENAME TABLE car TO temp_car;
RENAME TABLE new_car TO car;
DROP TABLE temp_car;
解决方案 3(快速删除表并创建空表,然后删除操作应该非常快):
TRUNCATE TABLE car;
DROP TABLE car;
RENAME TABLE new_car TO car;
解决方案4:
RENAME TABLE car TO temp_car;
RENAME TABLE new_car TO car;
TRUNCATE TABLE temp_car;
DROP TABLE temp_car;
哪个解决方案最好,为什么或者请编写其他更好的解决方案?
谢谢
最佳答案
我不明白你为什么要 DROP 表格。您总是想要那 2 个表并且您会(我假设正在重新填充 New_Car 表...
RENAME TABLE car TO temp_car;
RENAME TABLE new_car TO car;
TRUNCATE TABLE temp_car;
RENAME TABLE temp_car TO new_car;
关于mysql - 当同名表已存在时,mysql innodb 重命名大表的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12856783/