我有一个非常大的 MySQL 表(数百万行),它在 20 分钟内获取新数据。一开始我犯了一个错误,有一个时间戳数据,而我真正想要的是一个日期时间列。如何在仍然能够将新数据附加到旧表或新表的同时尽可能快地将当前表或迁移到新表?
问问题
115 次
1 回答
1
这取决于什么/谁在使用数据库,以及您拥有什么控制权......
一种方法可能是:
- 创建一个新表(具有所需的数据结构)(
CREATE TABLE...
) - 修改正在写入数据库的代码/进程,以便它们同时写入旧表和新表(但继续从旧表中读取)
- 当所有内容都写入时,将旧数据从旧表复制到新表(
INSERT ... SELECT ...
) - 修改从数据库读取的代码/进程,以便它们从新表中读取(但继续写入两者)
- 当所有内容都从新表中读取时,修改代码/流程以仅写入新表
- 当一切都在读取和写入新表(单独)时,您可以删除旧表。(
DROP TABLE...
)
您也可以通过更改现有表(即创建一个新列)来做类似的事情,但如果您的数据每 20 分钟更新一次,您可能有一个非常大的表,在这种情况下 ALTER TABLE 查询可能需要一段时间才能运行 - 所以我建议改为迁移到新表。
于 2012-05-24T22:32:33.667 回答