gpt4 book ai didi

sql - 列出并终止 PostgresQL 中的所有死锁查询

转载 作者:行者123 更新时间:2023-11-29 13:10:50 24 4
gpt4 key购买 nike

我想在 PostgreSQL 中清理我的数据库进程,因为很少有查询处于死锁状态,结果整个数据库都在变慢。

所以我想知道列出所有死锁查询并定期清除它们的最佳实践。

我从 PgAdmin 那里得到了这个 View 。

enter image description here

最佳答案

正如 a_horse_with_no_name 评论的那样,您在 pgadmin 中看到的是常规锁,而不是死锁

来自 the Postgres documentation :

PostgreSQL provides various lock modes to control concurrent access to data in tables. These modes can be used for application-controlled locking in situations where MVCC does not give the desired behavior. Also, most PostgreSQL commands automatically acquire locks of appropriate modes to ensure that referenced tables are not dropped or modified in incompatible ways while the command executes.

pgadmin 中的屏幕可能基于 the pg_lock system view .

锁发生在任何数据库的正常进程中。您不想终止定期生成锁的 session ,因为这会以各种方式影响您的应用程序和数据库。相反,您可能想要识别(可能使用 pg_lock View )、分析和优化导致问题的查询。


关于死锁的概念:这是在使用锁时可能发生的一种特定的异常情况,其中两个 session 相互等待另一个。它们通常指示应用程序逻辑中的问题。

大多数 RDBMS 会自动识别并解决这种阻塞情况,并且 Postgres is no exception :

PostgreSQL automatically detects deadlock situations and resolves them by aborting one of the transactions involved, allowing the other(s) to complete. (Exactly which transaction will be aborted is difficult to predict and should not be relied upon.)

关于sql - 列出并终止 PostgresQL 中的所有死锁查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54973123/

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