gpt4 book ai didi

postgresql - Postgres : how to start a procedure right after database start?

转载 作者:行者123 更新时间:2023-11-29 12:05:55 26 4
gpt4 key购买 nike

我有几十个未记录的表,文档说未记录的表在崩溃或不正常关机后会自动截断。

基于此,我需要在数据库启动后检查一些表,看它们是否为“空”并采取一些措施。

简而言之,我需要在数据库启动后立即执行一个过程。

最好的方法是什么?

PS:我在 Ubuntu 12.04 服务器上运行 Postgres 9.1。

最佳答案

没有这样的功能可用(在撰写本文时,最新版本是 PostgreSQL 9.2)。您唯一的选择是:

  • 从轮询数据库的 PostgreSQL 初始化脚本启动脚本,当数据库准备就绪时锁定表并填充它们;

  • 修改启动脚本以使用pg_ctl start -w 并在pg_ctl 返回时立即调用您的脚本;这具有相同的竞争条件,但避免了轮询的需要。

  • 教您的应用程序在打开新的池连接时运行测试以检测这种情况、锁定表并填充它们;或者

  • 如果您的应用程序在打开新连接时无法处理它们为空的情况,请不要将未记录的表用于此任务

在 pgsql-hackers 上讨论了连接时间 Hook ,但没有发布和合并可行的实现。

您可以使用 PostgreSQL bgworkers 执行类似的操作,但这比简单地从脚本中轮询数据库要困难得多。

关于postgresql - Postgres : how to start a procedure right after database start?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16155096/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com