gpt4 book ai didi

postgresql - Postgres : Copying large subsets of data(10k+rows) from one schema to another for immediate use

转载 作者:行者123 更新时间:2023-11-29 13:48:31 25 4
gpt4 key购买 nike

我需要按需将行从一个 Postgres 模式推送到另一个模式。一个模式存储内容,另一个模式是数据子集的副本,最终用户将添加、修改、删除这些数据以供其自定义使用。随着更多内容的添加以及最终用户吸收和定制更多内容,每个架构表中有 10+ 百万条记录并且还在增长。数据移动将是从多个表到另一个模式中的多个表的数千条记录。这些模式在同一个数据库中。这些数据将一直在移动,并且需要非常快,以便最终用户可以在选择内容后立即开始定制。我研究了 COPY 函数以及触发复制,但似乎没有一个能按需要快速执行。我不能在插入之前删除索引,因为消费者经常大量使用这些表。任何建议将不胜感激。

最佳答案

由于您正在从一个数据库的一个模式中的一堆表复制到同一数据库的另一个模式,并且在您最快的方法是使用 INSERT INTO ... SELECT FROM 之前无法开始,以有权访问这两个架构的用户身份运行,例如:

INSERT INTO schema2.table_y ( field, field, field )
SELECT field, field, field
FROM schema1.table_y
WHERE user filter condition

由于您必须对多个表执行此操作,您可以将其包装在一个大事务中,或者使用 Writeable CTEs 执行多个插入语句在一个大查询中。

这确实是获取数据副本 的最快方式。然而,它仍然需要非零时间;提取数据的 SELECT 查询都需要一些时间,在多个表中插入数千行也是如此。减少此时间的方法是一般查询和性能优化。

如果操作有效,用户不需要数据副本,而只需要数据的实时子集,那么您可以使用 VIEWs 进行探索,包括可更新的。但听起来您需要一份副本。

关于postgresql - Postgres : Copying large subsets of data(10k+rows) from one schema to another for immediate use,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44528452/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com