【问题标题】:Which ALTER TABLE commands will or won't need a table lock?哪些 ALTER TABLE 命令需要或不需要表锁?
【发布时间】:2012-12-05 17:39:27
【问题描述】:

在 postgres 9.1 中,这个查询需要表锁吗? (禁止其他客户端写,或者写和读)

ALTER TABLE "foos" ADD COLUMN "bar" boolean DEFAULT 'f'

在某些情况下会,在某些情况下不会?

默认值会变慢吗?

如果它确实锁定了表,它是否也必须对表中的每一行进行操作?或者锁定只会保持一瞬间?

我在哪里可以详细了解哪些类型的查询会锁定表和不会锁定表?

【问题讨论】:

    标签: sql postgresql


    【解决方案1】:

    是的,它会在进行修改时锁定表。

    • 如果表很大,有很多行数据,这可能需要相当长的时间。
    • 如果另一个连接当前在表上拥有更高优先级的锁,此操作将等待锁被清除

    要了解有关 PostgreSQL 9.1 的更多信息,请查看优秀的 online documentation 尤其是 ALTER TABLE 部分

    另外,here 是一个相关的问题,不过是针对 MySQL 的。它提供了一些可以应用于 PostgreSQL 的提示和技巧

    【讨论】:

    • PostgreSQL 和 MySQL 中的锁定非常不同,您无法比较这两个数据库的锁定行为。在 PostgreSQL 中需要一瞬间,在 MySQL 中需要几个小时……这就是我们将 MySQL 抛在后面的原因。
    • @FrankHeikens 您能否详细说明答案?我在上面的问题中添加了一些更具体的问题。
    • @FrankHeikens 不管 mysql 和 PG 之间的锁定机制有多么不同,考虑到操作员的问题,锁定仍然发挥作用。
    猜你喜欢
    • 1970-01-01
    • 2013-01-28
    • 1970-01-01
    • 2022-01-27
    • 2015-08-24
    • 2011-11-27
    • 1970-01-01
    • 2010-10-07
    • 2010-10-02
    相关资源
    最近更新 更多