在我的 Java webapp 中,每个实例都在启动时检查数据库是否通过 JDBC 连接是最新的。如果数据库不是最新的,它会通过执行 SQL 脚本来执行更新例程。
我无法控制实例何时启动。因此,我需要确保只有一个实例同时执行数据库更新。理想情况下,我需要锁定整个数据库,但根据
http://www.postgresql.org/docs/8.4/static/explicit-locking.html
和
http://wiki.postgresql.org/wiki/Lock_database
PostgreSQL 不支持它(我仍在使用 8.4 版)。
我还有什么其他选择?