我正在努力学习PostgreSQL MVCC体系结构。它说,MVCC为每个并发查询创建一个单独的快照。这种方法不是内存不足吗?
例如,如果有1000个并发查询,并且表的大小很大。这将创建该表的多个实例。
我的理解正确吗?
发布于 2020-02-23 16:02:48
它说,MVCC为每个并发查询创建一个单独的快照。这种方法不是内存不足吗?
你可以说这是记忆效率低下。在实践中,这通常不是什么大问题。
例如,如果有1000个并发查询,并且表的大小很大。
为什么要有/需要1000个并发查询?你们有1000个CPU吗?如果存在尝试建立1000个并发查询的风险,则应该部署一些条目控制机制(如连接池程序),以防止这种情况发生,并回退到max_connections。
这将创建该表的多个实例。
快照不是表的副本。只是一个一组信息,它动态地应用于基表行,以确定哪些行在该快照中可见。快照的大小与并发事务的数量成正比(原因之一是没有1000个事务),而不是表的大小。
https://stackoverflow.com/questions/60361747
复制相似问题