我有一个在 Amazon 的 RDS 上运行的 MySQL 实例。这意味着我无法更改任何二进制日志设置。
我有一个source
像这样创建的表,其中包含大约 20 亿行:
CREATE TABLE `source` (
id INT PRIMARY KEY AUTO_INCREMENT,
value1 VARCHAR(256),
value2 VARCHAR(256)
);
我有另一个表destination
,具有相同的列,但它id
是BIGINT
:
CREATE TABLE `destination` (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
value1 VARCHAR(256),
value2 VARCHAR(256)
);
该source
表在我要压缩的 ID 中有间隙。我想将所有行复制source
到destination
,不带id
列,如下所示:
INSERT INTO `destination` (value1, value2)
SELECT value1, value2 FROM `source`;
我怎样才能做到这一点,而不锁定source
表?由于表的大小,副本本身将花费非常长的时间,而且我不能将它锁定那么久。
我基本上想READ UNCOMMITTED
隔离地运行上面的语句,但由于我无法更改任何二进制日志设置,这是不可能的。