postgres:delete-before-insert需要锁吗?

qltillow  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(309)

我想替换客户的记录列表。看来,博士后没有 merge 处理我的案子的声明我决定这样做:
我像这样删除了客户的所有记录 DELETE FROM SOME_TABLE WHERE SOME_TABLE.CLIENT_ID=? 然后插入一些新记录: INSERT INTO SOME_TABLE (CLIENT_ID, ...) VALUES (1, ...), (2, ...) 我在做交易。
我的问题是:我知道需要某种形式的同步(锁或某种级别的事务隔离)的先写后读问题。
这是这些案子之一吗?

0s7z1bwu

0s7z1bwu1#

如果没有太多的客户机,可以按 client_id .
那么,为客户机替换数据的速度可以是最快的:

BEGIN;
TRUNCATE some_table_partition_1;
COPY some_table_partition_1 (client_id, ...) FROM STDIN
   (FORMAT 'csv', FREEZE);
COMMIT;

分区将在操作期间自动锁定。

相关问题