0

有没有人对使用 PostgreSQL 的旧持久数据有问题。我最近做了一份报告,得到了两个不同的结果。我第二次运行报告时丢失了六条记录。

4

1 回答 1

0

几乎可以完全确定问题出在您的代码或您使用 PostgreSQL 的方式上。您没有提供足够的信息让任何人解释这一点 - 甚至您的 PostgreSQL 版本也没有!

影响事务隔离和可见性的核心 MVCC 设计的错误会报告给邮件列表,但很少会消失,而且它们往往出现在通常不会遇到的时髦的极端情况中。

我看到数据死而复生的唯一时间是:

  • 用户一直在使用fsync=offfsync 或在存储上运行,并且他们在DELETE. 他们DELETE返回了一些 d 数据,以及一些有趣的损坏表和索引。设置fsync=off基本上告诉 PostgreSQL“让它更快,我不在乎你是否销毁我所有的数据”,所以这是一个完全有效的结果。

  • 有人在标记的函数上创建了一个索引,该函数IMMUTABLE根本不是真正不可变的。这通常只会产生错误的结果,但是对于 9.2 的覆盖索引,我怀疑它也有可能似乎将数据从死里带回来。

所以,老实说,这是你做错的事情。尝试发布一个更详细的新问题

  • pg版
  • 您如何运行报告
  • DDL
  • SQL
  • 数据库工作负载是什么样的
  • 同时发生了什么
  • 还有哪些其他客户

...等等,也许有人可以提供帮助。

于 2012-09-18T23:28:20.030 回答