并发查询的MVCC快照限制

问题描述 投票:0回答:1

我正在尝试学习PostgreSQL MVCC架构。它说MVCC为每个并发查询创建一个单独的快照。这种方法不是效率低下吗?

例如,如果有1000个并发查询,并且表大小很大。这将创建表的多个实例。

我的理解正确吗?

postgresql concurrency locking rdbms mvcc
1个回答
2
投票

它说MVCC为每个并发查询创建一个单独的快照。这种方法不是效率低下吗?

您可能会辩称这是内存效率低下。实际上这通常不是什么大问题。

例如,如果有1000个并发查询,并且表大小很大。

为什么会有/想要1000个并发查询?您有1000个CPU吗?如果存在尝试建立1000个并发查询的风险,则应部署某种条目控制机制(如连接池),以防止这种情况的发生,并回退到max_connections。

这将创建表的多个实例。

快照不是表的副本。只是一个set of information,它会动态应用于基表行,以决定哪些行在该快照中可见。快照的大小与并发事务的数量成正比(一个原因是没有1000个并发事务),而不与表的大小成正比。

© www.soinside.com 2019 - 2024. All rights reserved.