Sup*_*zar 3 postgresql alter-table postgresql-10
太长了;博士
以下查询在执行时会阻止 postgres 服务器
ALTER TABLE "image_data" ADD COLUMN "user_status" varchar(30) NULL
Run Code Online (Sandbox Code Playgroud)
引擎版本10.6
行数 1.5 mil
你好,
我的生产数据库服务器有一个有点奇怪的问题(我无法在本地服务器上重现)。作为部署过程的一部分,我想添加一个默认值为null的新列。当我运行上述查询(由 dajngo 的迁移过程生成)时,它失败了,并且在此过程中锁定了数据库并阻止了其他查询(非锁定选择)的执行。由于是生产环境,所以几分钟后(大约10分钟)就回滚了。我发现最不寻常的是,相同的查询在我的本地数据库复制(具有与生产完全相同的数据)上执行不到一秒。
编辑:当我运行此事务时,它会阻止所有其他选择查询对数据库的访问 - 我认为(如果我错了,请纠正我)意味着数据库实际上被此事务阻止了。
问题不是您的ALTER TABLE
,而是数据库中的其他事务。
您必须有一些长时间运行的事务来持有表上的任何锁(ACCESS SHARE
来自 a 的锁SELECT
足以阻止ACCESS EXCLUSIVE
an 的锁ALTER TABLE
)。
您ALTER TABLE
必须等到长时间运行的事务消失,并且尝试访问该表的任何后续事务都必须在ALTER TABLE
.
关闭长时间运行的事务,该语句将立即完成。
归档时间: |
|
查看次数: |
1875 次 |
最近记录: |