跨进程的PostgreSQL偏移字段一致性
我试图将Postgres表1复制到另一个表2,同时更改其中一列的值。为了加快传输速度,我在表1中运行了10个不同的进程,每个进程都有不同的偏移量,例如,跨进程的PostgreSQL偏移字段一致性,postgresql,Postgresql,我试图将Postgres表1复制到另一个表2,同时更改其中一列的值。为了加快传输速度,我在表1中运行了10个不同的进程,每个进程都有不同的偏移量,例如,1st process:SELECT*from table OFFSET offset1 LIMIT x然后复制到表2,第二个过程:从表偏移量2限制x中选择*然后复制到表2 但是,即使我的表1中没有重复的行,我的表2中也有重复的行(x小于offset2-offset1)。是否有可能相同的偏移量值在不同的进程中不指向表中的同一行?如果是,在Post
1st process
:SELECT*from table OFFSET offset1 LIMIT x代码>然后复制到表2
,第二个过程
:从表偏移量2限制x中选择*然后复制到表2
但是,即使我的表1中没有重复的行,我的表2中也有重复的行(x
小于offset2-offset1
)。是否有可能相同的偏移量值在不同的进程中不指向表中的同一行?如果是,在Postgres中修改列时复制表的更好方法是什么?谢谢 如果没有
order by
语句,限制和偏移很少有意义。。。SQL对行顺序不提供任何保证,除非您将其显式化。因此,添加一个orderby
子句
此外,如果您希望批发复制表,那么最好简单地:
insert into table2 select * from table1
近似重复:。另一个问题的提问者使用了
order by
,但不是唯一的表达式。顺便说一句,丹尼斯的回答中没有这一点。仅使用排序依据是不够的,它需要应用于所有行中唯一的字段或字段组合或表达式。此外,您还应该将时间创建表2作为选择…
,除非您的postgres数据分区分布在大量物理驱动器上,否则,如果这些会话相互竞争以获得对磁盘的访问权,则可能比10个不同的进程要快