繁体   English   中英

由于 1 个数据库上的锁定问题,具有多个数据库的 Postgres 实例是否会在多个/所有数据库中被阻止?

[英]Can a Postgres instance with many Databases become blocked across many/all Databases due to a Locking issue on 1 Database?

我还没有看到任何有关此的文档; 高级问题是,鉴于我们有一个包含许多数据库的 Postgres 实例(托管为 AWS RDS),查询执行和锁定其中一个数据库的问题会导致整个实例出现问题吗?

我正在专门寻找有关查询执行/锁定的信息 - 我很欣赏有关 memory / CPU 使用率的问题可以共享,因为这是一个共享资源。

今天早些时候,我们的一个数据库出现了一个问题,基本上所有查询执行都停止了; 经过进一步调查,我们发现内部有 8 个“阻塞”查询循环阻塞(即相互依赖执行)。

出于某种原因,不仅受影响的数据库卡住了,实例上的其他数据库也卡住了——甚至那些不在锁定周期内的数据库也是如此。

在数据库之间共享 RDS Instance 时,我们应该注意哪些参数/约束?

我们正在使用 AWS Postgres 11

您所描述的听起来不像数据库中的锁。 如果多个进程相互阻塞,这称为死锁,PostgreSQL 通过取消其中一个涉及的事务来自动解决它。

因此,可能在所涉及的数据库之外存在一些锁,或者您只是忘记提交事务,并且您在数据库中有一个活锁

现在通常这只会影响单个数据库,因为您无法访问与您连接的数据库不同的数据库中的对象。 唯一的例外是,如果您对以下共享表之一进行了锁定: pg_databasepg_authidpg_tablespacepg_shdepend 但是你必须做一些非常不寻常的事情,通常需要超级用户权限才能做到这一点。 您在托管数据库上没有这些权限。

结果是:没有什么可考虑的,你所描述的不应该发生。 您应该更仔细地调查究竟是什么导致了这种挂起。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM