PostgreSQL表上的选择计数(*)是否锁定?

发布于 2025-01-29 21:08:05 字数 71 浏览 2 评论 0原文

在PostgreSQL表上执行选择计数(*)是否锁定?如果是这样,是否可以像SQL Server中的(Nolock)那样行事吗?

Does performing a SELECT COUNT(*) on a PostgreSQL table lock it? If so is there a way around it to behave like WITH (nolock) in SQL Server?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

酷到爆炸 2025-02-05 21:08:05

否。

一个选择永远不要锁定Postgres中的桌子。

或更准确地说:它仅采用一个非常弱的共享锁,该锁可以阻止表上的DDL。

在Postgres中,读者从未阻止作家和作家从未阻止读者。

No.

A SELECT never locks a table in Postgres.

Or more precisely: it only takes a very weak shared lock that prevents DDL on the table.

In Postgres, readers never block writers and writers never block readers.

后知后觉 2025-02-05 21:08:05

每种访问表都可以锁定。所以,是的,它确实锁定了。但是看来您有一个不同的问题,因为这样的问题只有在您有问题时才弹出。但是我们不知道这是什么问题。

所有不同类型的锁以及它们如何相互作用,可以在手动。在大多数情况下,您没有任何并发​​问题。您可以在同一表上有数十个同时选择的选择语句,而无需任何锁定问题。

Every type of access to a table takes a lock. So Yes, it does take a lock. But it looks like you have a different question because a question like this only pops up when you have a problem. But we don't know what problem that is.

All the different types of locks and how they interact with each other, can be found in the manual. In most cases you don't have any issues with concurrency. You can have dozens of concurrent SELECT statements on the same table without any locking issues.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文