1

案例:有一个巨大的表,每24小时需要删除所有数据并获取新数据。

如何在不阻止用户从该表中读取数据的情况下截断该表并插入新数据?

我想做什么:(请写下哪个选项更好或建议更合适的选项或标准解决方案)

选项1:

 1. insert new data to temp table
 2. drop old table
 3. rename temp table to the table name

选项2(问题:用户无法访问中间的表数据):

 1. truncate the table
 2. insert new data to table
4

2 回答 2

1
1.insert new data to temp table
2.CREATE TABLE newtable select * from oldtable where 1=2
3.drop old table
4.INSERT INTO newtable select * from temp
于 2012-09-24T08:44:47.720 回答
1

如果您有任何旧数据要保留:在您的表中添加一个 id 列。用一行中所有列的值计算的哈希值填充它。将新数据加载到临时表中。使用已更改的行和新行更新旧数据。否则,您的第一个解决方案就是要走的路,因为重命名表不需要 mch 时间。

于 2012-09-24T09:44:52.027 回答