首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >大型静态表上的MySQL INSERT SELECT

大型静态表上的MySQL INSERT SELECT
EN

Stack Overflow用户
提问于 2012-08-14 13:57:48
回答 2查看 267关注 0票数 0

我需要将一个表的内容复制到另一个表中。所以我开始使用:

代码语言:javascript
复制
INSERT new_table SELECT * FROM old_table

但是,我现在收到以下错误:

代码语言:javascript
复制
1297, "Got temporary error 233 'Out of operation records in transaction coordinator (increase MaxNoOfConcurrentOperations)' from NDBCLUSTER"

我想我知道为什么会发生这种情况:我的表很大,MySQL试图及时拍摄快照(锁定所有内容并从中创建一个大型事务)。

但是,我的数据是相当静态的,并且没有其他并发会话可以修改数据。如何才能告诉MySQL一次复制一行,或者复制更小的块,而不锁定整个内容呢?

编辑说明:我已经知道,我可以将整个表逐行读取到内存/文件/转储中,然后写回。我很想知道是否有简单的方法(比如设置隔离级别?)。请注意,引擎是InnoDB。

EN

回答 2

Stack Overflow用户

发布于 2012-08-14 14:01:32

正如您所说,数据迁移是少数几个CURSOR有意义的实例之一,它可以确保锁的数量保持正常。

将游标与TRANSACTION结合使用,在每行或N行之后提交(例如,使用带模数的计数器)

票数 2
EN

Stack Overflow用户

发布于 2012-08-14 14:10:33

从innodb中选择数据到outfile,并将infile加载到集群中

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11946515

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档