![](/img/trans.png)
[英]Using mySQL InnoDb for row level locking but don't care about transaction overhead
[英]Avoiding InnoDB transaction overhead in table copy using INSERT … SELECT
我不想创建ALTER TABLE
而是创建一个新表,将数据复制到该表中,然后再使用它。 在InnoDB中这样做时,我总是很难执行:
INSERT INTO new_huge_tbl (SELECT * FROM old_huge_tbl)
由于事务的性质,至少在任何时候我都需要停止此操作时,回滚并不容易。 有什么方法可以在InnoDB中执行此操作而不将其作为事务吗?
不,不可能以简单的方式避免交易开销。 您可能有两个选择:
pt-archiver
。 在内部,例如为ALTER TABLE
进行表复制时,InnoDB确实做到了这一点,将副本批量处理为许多较小的事务。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.