更换桌子的正确方法是什么?

时间:2015-10-26 20:49:32

标签: mysql sql database-design

我有一个MySQL数据库mydb和一个反映mytestdb的测试环境mydb中的数据库。我需要一种从测试数据库到实时数据库“推动更改”的方法。所以伪代码中的过程就像

for each table T in mydb
   delete all from T
   T' = corresponding table in mytestdb
   for each row R in T' 
       insert R in T

或者我应该不同地执行该程序?这个设置有任何潜在的问题吗?

1 个答案:

答案 0 :(得分:1)

计划A:

DROP TABLE x;
Create and Load its replacement.

Plan B(更适合在 live 情况下重新加载表格):

CREATE TABLE new LIKE real;
LOAD TABLE new ...                      -- slowest step
RENAME TABLE real TO old, new TO real;  -- atomic and 'instantaneous'
DROP TABLE old;