我问过: How to break connections TCP/IP by keepalive postgreSQL without changing anything in the register?
现在,我想确认一下:
我的系统(C#.NET,NHibernate和Active Record)正在运行数据库PostgreSQL 8.4和Windows Server。我需要一种方法来打破空闲或丢失TCP / IP连接并取消阻止数据。
我无法调整操作系统配置,也无法重新编译PostgreSQL。如果需要,我的系统可以在Oracle 10g Express中运行!我需要知道:我可以在没有为PostgreSQL实现新补丁的情况下打破空闲连接吗?我是否需要将数据库迁移到Oracle?
谢谢,
答案 0 :(得分:1)
您正在寻找pg_cancel_backend()或pg_terminate_backend()?
检查http://www.postgresql.org/docs/current/static/functions-admin.html
答案 1 :(得分:1)
如果有办法强制每个新连接在连接时执行查询,您可以编写一个数据库函数,为某些条件中的任何进程动态调用“pg_terminate_backend(pid)”。在不知道您的设置的情况下,一些可能性是:
就个人而言,我会尝试重构,以尽量减少任何交易可能开放的时间。在某些地方,您可能会不必要地打开交易,从而导致触发问题的可能性增加: