我正在考虑在 PostgreSQL 中对Write Ahead Logs (WAL)进行日志传送,以创建一个热备份数据库。但是,我在数据库中有一张表,每天都会收到大量的 INSERT/DELETE,但我并不关心保护其中的数据。为了减少产生的 WAL 的数量,我想知道,有没有办法防止一个表上的任何活动被记录在 WAL 中?
Guy C
问问题
2541 次
4 回答
11
遇到了这个老问题,现在有了更好的答案。Postgres 9.1 引入了“Unlogged Tables”,即不将其 DML 更改记录到 WAL 的表。有关更多信息,请参阅文档,但至少现在有解决此问题的方法。
请参阅depesz 的Waiting for 9.1 - UNLOGGED 表和9.1 文档。
于 2011-10-29T14:19:26.100 回答
5
不幸的是,我不相信有。WAL 日志是在页级别操作的,它比表级别低很多,甚至不知道哪个页保存了哪个表的数据。事实上,WAL 文件甚至不知道哪些页面属于哪个数据库。
您可能会考虑将您的高活动表移动到一个完全不同的 PostgreSQL 实例。这似乎很激烈,但我想不出另一种方法来避免该活动出现在您的 WAL 文件中。
于 2008-09-02T08:34:37.220 回答
0
为我自己的问题提供一种选择。有临时表——“临时表在会话结束时自动删除,或者在当前事务结束时自动删除(参见下面的 ON COMMIT)”——我认为它不会生成 WAL。即便如此,这可能并不理想,因为表格创建和设计必须在代码中。
于 2008-09-03T12:54:39.177 回答
-5
对于这样的用例,我会考虑使用memcached。您甚至可以将负载分散到一堆便宜的机器上。
于 2009-05-03T03:33:47.010 回答