我们目前将事物存储到Redis中以进行临时聚合,并且有一个工作程序可以批量插入Postgres中。有没有一种方法可以在单个Insert事务中跨多个模式进行批量插入?这将消除在Redis中聚合事物的需要。或者,是否有更好的方法来汇总请求?
非常感谢您的帮助。
答案 0 :(得分:1)
这实际上取决于您对“单次插入交易”的含义。
单个INSERT
语句只能影响一个特定的表。但是,您仍然可以BEGIN
进行事务处理(取决于实现方式),在其中执行所有INSERT
,然后COMMIT
进行事务处理。
这将比在许多事务上执行所有INSERT
效率更高,因为它避免了多余的“握手”。
答案 1 :(得分:0)
您是否尝试过创建可更新的视图,该视图引用两个表,然后批量插入该视图?
答案 2 :(得分:0)
您是否正在寻找类似的东西?
with data (c1, c2) as (
values (1,2),(10,20),(30,40)
), s1_insert as (
insert into schema_one.table_1(c1, c2)
select c1, c2
from data
)
insert into schema_two.table_2(col1, col2)
select c1, c2
from data;
答案 3 :(得分:-1)
如果执行插入语句,则将发生单个事务,并且只能插入单个表中(因此,在单个事务中 完全不可能跨多个模式插入)
。