将截断的记录移至Postgresql 9.5中的另一个表



问题如下:从一个表中删除所有记录,然后将它们插入另一个表。

我有一个按日期标准分区的表。为了避免将每个记录逐一划分,我将数据收集到一个表中,并定期将其移至另一个表中。必须从第一表中删除复制的记录。我正在使用返回的删除查询,但副作用是Autovacuum正在做很多工作要做的工作以清理原始表中的混乱。

我正在尝试达到相同的效果(复制和删除记录(,但没有为真空机制创建其他工作。

当我删除所有行(通过delete没有条件下的删除(时,我正在考虑截断,但它不支持返回子句。另一个想法是以某种方式配置该表,以自动从删除操作中的页面上删除元组,而无需等待真空,但是如果可能的话,我找不到。

您能建议我解决问题吗?

您需要使用以下内容:

--Open your transaction
BEGIN;
--Prevent concurrent writes, but allow concurrent data access
LOCK TABLE table_a IN SHARE MODE;
--Copy the data from table_a to table_b, you can also use CREATE TABLE AS to do this
INSERT INTO table_b AS SELECT * FROM table_a;
--Zeroying table_a
TRUNCATE TABLE table_a;
--Commits and release the lock
COMMIT;

相关内容

  • 没有找到相关文章

最新更新