当具有相同名称的表已经存在时,使用mysql innodb重命名大型表的最佳实践

Yos*_*sef 2 mysql sql performance sqlperformance database-performance

我使用Mysql 5.5 .. + INNODB和Windows Server。

案例(先简单然后再案例):

我有2个表1GB,名称new_carcar表1GB。

我每隔10小时carnew_car表格替换表格,而不是手动(按代码自动)-快速完成(实际网站数据)很重要。

我读了(说在innodb中删除了它的问题):http : //www.mysqlperformanceblog.com/2011/02/03/performance-problem-with-innodb-and-drop-table/

解决方案1:

DROP TABLE car;
RENAME TABLE new_car TO car;
Run Code Online (Sandbox Code Playgroud)

解决方案2(最后放置-可能不会阻止表访问在放置期间发生的访问):

RENAME TABLE car TO temp_car;
RENAME TABLE new_car TO car;
DROP TABLE temp_car;
Run Code Online (Sandbox Code Playgroud)

解决方案3(截断快速删除表并创建空表,然后在执行删除操作后应该很快):

TRUNCATE TABLE car;
DROP TABLE car;
RENAME TABLE new_car TO car; 
Run Code Online (Sandbox Code Playgroud)

解决方案4:

RENAME TABLE car TO temp_car;
RENAME TABLE new_car TO car;
TRUNCATE TABLE temp_car;
DROP TABLE temp_car;
Run Code Online (Sandbox Code Playgroud)

哪种解决方案是最好的,为什么或请写其他更好的解决方案?

谢谢

Lou*_*cci 5

我不明白您为什么要放弃桌子。您总是想要那两个表,然后(我想重新填充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;
Run Code Online (Sandbox Code Playgroud)