【问题标题】:What is alternative to "lock_timeout" in PostgreSQL?PostgreSQL 中“lock_timeout”的替代方法是什么?
【发布时间】:2023-01-07 00:48:16
【问题描述】:

如果我阻止了其他会话,我需要终止我的会话。但截至目前,我们只能选择使用 lock_timeout 终止被其他会话阻止的自己的会话。 如果我们的会话阻止了其他会话而不是自己的会话被其他人阻止,我们是否可以在 postgres 中选择超时自己的会话?

【问题讨论】:

  • 不幸的是,没有这样的选择。问题是你知道你会持有锁很长时间,你只是不知道是否有其他人想要它?或者您不知道要持有锁多久?

标签: database postgresql session kill lock-timeout


【解决方案1】:

你应该设置idle_in_transaction_session_timeoutstatement_timeout。如果它运行太长的语句并且在数据库事务中挂起空闲,那么你的阻塞会话就会被杀死。

【讨论】:

    【解决方案2】:

    statement_timeout 在 PostgreSQL 中替代 = lock_timeout

    中止任何花费超过指定时间量的语句。

    例如,SELECT pg_sleep(30);在 10 秒后超时,如下所示:

    postgres=# SET statement_timeout to 10000;
    SET
    postgres=# SELECT pg_sleep(30);
    ERROR:  canceling statement due to statement timeout
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-11-13
      • 2015-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多