3

我使用 Mysql 5.5 .. + INNODB 和 windows 服务器。

案例(让它简单然后真实案例):

我有 2 个 1GB 的表,名称为new_car1GB car

我每 10 小时car用表替换表,new_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;

解决方案2(最终删除 - 也许它不会阻止表访问在删除期间发生的情况):

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;

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

谢谢

4

4 回答 4

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;
于 2012-10-12T15:34:32.057 回答
0
RENAME TABLE car TO temp_car, new_car TO car;
TRUNCATE TABLE temp_car;
DROP TABLE temp_car;
于 2014-01-14T00:24:51.613 回答
0

重命名表文档中所述:

RENAME TABLE 重命名一个或多个表。重命名操作从左到右执行。

您可以在单个查询中执行多个表重命名,而不是运行多个重命名查询,如下所示:

RENAME TABLE car TO temp_car, new_car TO car
DROP TABLE temp_car

尽管请注意这样的表重命名可能会导致几秒钟的锁定/延迟问题。这取决于您的应用程序是否可以接受。

于 2019-10-03T20:16:01.730 回答
-1

使用 replace into 大约需要 5 分钟或使用 Load infile 来批量处理

于 2014-01-10T20:58:35.367 回答