【发布时间】:2015-04-27 09:28:20
【问题描述】:
使用 Mac OS X 10.10 (Yosemite) 和 Homebrew (0.9.5),我安装了 PostgreSQL 9.4.1。基本上截至本文发布时的所有当前版本...
我已经成功地导入了一个极其庞大的数据库(5600 万条记录 - 导入 15 小时),并编写了一个在本地使用它的应用程序。我找到了一个应用程序 pgAdmin3,它可以让我使用 GUI 执行各种管理任务。一切都很好。
每次我重新启动计算机时,一次是由于 USB 火线音频接口的内核崩溃,一次是由于电源故障,两次是由于用户启动的重新启动 - 每次重新启动后,数据库都是空的。数据库用户/角色仍然存在,表和关系仍然存在,但是,所有表都是空的。 0 条记录。没有什么。 pgAdmin3 甚至显示该表已为数百万条记录分配 的空间,具有“未定义”计数。刷新计数,显示 0 条记录。浏览数据显示 0 条记录。我的 Mac 应用程序(使用 libpq)成功连接到数据库,并从其任何/所有 SELECT 语句中获得 0 结果。提到每次重新导入数据库需要 15 个小时是多余的吗? (反问)
任何和所有建议都表示赞赏。
Mac OS X 10.0.2(优胜美地) 自制 0.9.5 x86_64-apple-darwin14.1.0 上的 PostgreSQL 9.4.1,由 Apple LLVM 版本 6.0 (clang-600.0.56)(基于 LLVM 3.5svn)编译,64 位
【问题讨论】:
-
您是否将它们创建为
UNLOGGED表?如果是这样,这是不正常关机时的预期行为。为其中一张表显示\d mytable- 它是“Table mytable”还是“Unlogged table mytable”? -
是的,这些表没有记录。那么,假设您要保留的表已记录似乎是安全的,而且我没有想到一个好的用例用于临时表并且可以消失,但这就是您使用未记录表的原因?
-
手册对此进行了说明。未记录的表非常适合数据加载、物化视图、多会话临时表等。尤其是在必要时可以重建数据但很耗时的情况,因此您宁愿不这样做。它们具有显着的性能优势并且不会被复制——这有时可以避免不必要的复制开销。与大多数功能一样,它只是合理地使用它们并用于正确的事情。
-
克雷格谢谢你,我真的应该花更多的时间阅读精美的手册,当我有时间的时候我会这样做。我找到了一个现有的 python 脚本来导入数据库(一个定期更新并经常重新导入的知识共享开放许可证数据库),并且说脚本将所有表声明为 UNLOGGED。我错过了什么告诉数据库不要在重启时刷新这些?可能我猜测正常的 Mac 重启过程与正确关闭数据库无关?我想我可以将它们全部记录下来,但我担心性能问题是什么。谢谢大家。
标签: database macos postgresql