而不是做ALTER TABLE
我更喜欢创建一个新表,将数据复制到它,然后移动使用它。在InnoDB中这样做时,我总是很难表现:
INSERT INTO new_huge_tbl (SELECT * FROM old_huge_tbl)
由于交易的性质,如果我在任何时候需要停止此操作,至少可以说回滚并不容易。有没有什么办法可以在InnoDB中执行此操作而不是它的交易?
答案 0 :(得分:0)
不,以简单的方式避免交易开销是不可能的。您可能有两种选择:
pt-archiver
。在内部,为表格复制时,例如ALTER TABLE
,InnoDB确实做到了这一点,将副本批量处理为许多较小的事务。