我需要杀死我的会话,如果我阻塞了其他会话。但到目前为止,我们只有一个选项,杀死自己的会话被其他会话阻塞使用lock_timeout。如果我们的会话阻塞了其他会话,而不是自己的会话被其他人阻塞,我们是否有在postgres中超时自己的会话的选项?
tktrz96b1#
您应该设置idle_in_transaction_session_timeout和statement_timeout,这样,如果阻塞会话运行的语句太长,并且在数据库事务中挂起空闲状态,它就会被终止。
idle_in_transaction_session_timeout
statement_timeout
xqnpmsa82#
statement_timeout是另一个选项= PostgreSQL中的lock_timeout:中止花费超过指定时间的任何语句。例如,SELECT pg_sleep(30);在10秒后超时,如下所示:
SELECT pg_sleep(30);
postgres=# SET statement_timeout to 10000; SET postgres=# SELECT pg_sleep(30); ERROR: canceling statement due to statement timeout
2条答案
按热度按时间tktrz96b1#
您应该设置
idle_in_transaction_session_timeout
和statement_timeout
,这样,如果阻塞会话运行的语句太长,并且在数据库事务中挂起空闲状态,它就会被终止。xqnpmsa82#
statement_timeout是另一个选项= PostgreSQL中的lock_timeout:
中止花费超过指定时间的任何语句。
例如,
SELECT pg_sleep(30);
在10秒后超时,如下所示: