Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
大型静态表上的MySQL插入选择_Mysql_Sql - Fatal编程技术网

大型静态表上的MySQL插入选择

大型静态表上的MySQL插入选择,mysql,sql,Mysql,Sql,我需要将一个表的内容复制到另一个表。所以我开始使用: INSERT new_table SELECT * FROM old_table 但是,我现在遇到以下错误: 1297, "Got temporary error 233 'Out of operation records in transaction coordinator (increase MaxNoOfConcurrentOperations)' from NDBCLUSTER" 我想我已经理解了为什么会发生这种情况:我的表很大,

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

INSERT new_table SELECT * FROM old_table
但是,我现在遇到以下错误:

1297, "Got temporary error 233 'Out of operation records in transaction coordinator (increase MaxNoOfConcurrentOperations)' from NDBCLUSTER"
我想我已经理解了为什么会发生这种情况:我的表很大,MySQL试图及时拍摄快照(锁定所有内容并从中生成一个大型事务)

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


编辑说明:我已经知道我可以将整个表逐行读取到内存/file/dump中并写回。我想知道是否有一个简单的方法(也许设置隔离级别?)。请注意,引擎是InnoDB。

数据迁移是为数不多的几个实例之一,正如您所说,在这些实例中,a可以确保锁的数量保持正常


将光标与一起使用,在每行之后或N行之后提交(例如,使用带模的计数器)

将innodb中的数据选择到输出文件中,并将infle加载到输出文件中
群集

谢谢。这听起来很有趣。您能提供一个示例SQL过程或命令来说明我将如何执行它吗?