并发查询的 MVCC 快照限制
MVCC snapshot limit for concurrent queries
我正在尝试学习 PostgreSQL MVCC 架构。它说 MVCC 为每个并发查询创建一个单独的快照。这种方法内存效率低吗?
例如,如果有 1000 个并发查询并且 table 大小很大。这将创建 table.
的多个实例
我的理解正确吗?
It says that MVCC creates a separate snapshot for each concurrent query. Isn't this approach memory inefficient?
您可能会说这是内存效率低下。在实践中通常不是什么大问题。
For example if there are 1000 concurrent queries and table size is huge.
为什么要 have/want 1000 个并发查询?你有1000个CPU吗?如果存在尝试建立 1000 个并发查询的风险,那么您应该部署一些入口控制机制(如连接池)来防止这种情况发生,并回退到 max_connections.
This will create multiple instances of the table.
快照不是 table 的副本。只是一个 set of information 动态地应用于基础 table 行以确定哪些行在该快照中可见。快照的大小与并发事务的数量成正比(没有 1000 个的原因之一),而不是 table.
的大小
我正在尝试学习 PostgreSQL MVCC 架构。它说 MVCC 为每个并发查询创建一个单独的快照。这种方法内存效率低吗?
例如,如果有 1000 个并发查询并且 table 大小很大。这将创建 table.
的多个实例我的理解正确吗?
It says that MVCC creates a separate snapshot for each concurrent query. Isn't this approach memory inefficient?
您可能会说这是内存效率低下。在实践中通常不是什么大问题。
For example if there are 1000 concurrent queries and table size is huge.
为什么要 have/want 1000 个并发查询?你有1000个CPU吗?如果存在尝试建立 1000 个并发查询的风险,那么您应该部署一些入口控制机制(如连接池)来防止这种情况发生,并回退到 max_connections.
This will create multiple instances of the table.
快照不是 table 的副本。只是一个 set of information 动态地应用于基础 table 行以确定哪些行在该快照中可见。快照的大小与并发事务的数量成正比(没有 1000 个的原因之一),而不是 table.
的大小