我正在考虑日志传送 预写日志 (WAL) 在PostgreSQL中创建热备数据库。然而,我在数据库中有一张表,每天都会收到大量的插入/删除操作,但我不关心保护其中的数据。为了减少产生的 WAL 数量,我想知道, 有没有办法防止一个表上的任何活动被记录在 WAL 中?

有帮助吗?

解决方案

不幸的是,我不相信有。WAL日志记录在页级别上操作,其级别比表级别低得多,甚至不知道哪个页保存了哪个表的数据。事实上,WAL 文件甚至不知道哪些页面属于哪些页面 数据库.

您可能会考虑将高活动表移动到完全不同的 PostgreSQL 实例。这看起来很激烈,但我想不出另一种方法来避免该活动出现在您的 WAL 文件中。

其他提示

遇到这个老问题,现在有了更好的答案。Postgres 9.1 引入了“未记录表”,这些表不将其 DML 更改记录到 WAL。请参阅文档以获取更多信息,但至少现在这个问题有了解决方案。

等待 9.1 - UNLOGGED 表 由德佩斯和 9.1 文档.

为我自己的问题提供一种选择。有 临时表 - “临时表在会话结束时自动删除,或者可选地在当前事务结束时自动删除(请参阅下面的 ON COMMIT)” - 我认为这不会生成 WAL。即便如此,这可能并不理想,因为表创建和设计必须在代码中。

我会考虑 内存缓存 对于这样的用例。您甚至可以将负载分散到一堆廉价机器上。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top