你所在的位置: 首页 > 正文

详解PG并发控制机制--MVCC机制、实现方式、存在问题等

2019-09-04 点击:919

当我们使用PostgreSQL时,我们可能会遇到表扩展的问题(对于表扩展,我们可以参考前面的月度报告),也就是说,表中的数据量不是很大,但占用的磁盘空间是相对的大,而且查询很慢。为什么PostgreSQL可能会出现表格臃肿?这是因为PostgreSQL引入了MVCC机制来确保事务隔离并实现数据库隔离。

PostgreSQL的一个特性是它的并发控制机制,它避免了读写的阻塞,同时保持了一致性和完整性。 MVCC通过避免传统数据库的LOCK机制来最小化锁竞争以避免在合理的多用户环境中的性能。

在PostgreSQL中,一个表对应一个逻辑文件,一个表被分成几个物理段文件(关系段),除了最后一个段,默认大小为40M。

文件页(磁盘块)是物理段文件的基本存储单元,也是内存和磁盘交换的单位。文件页面大小限制了表元组的大小,并影响磁盘操作的效率。默认大小为8192字节,可以设置为最大2 ^ 15字节(这由磁盘块索引为15位确定)。

文件页面空间在逻辑上分为三个部分:

PageHeader:页面描述区域记录页面的用法,例如页面分发格式版本,元组数据空间的起始位置和特殊空间,以及与文件页面相关的事务日志记录点。元组项空间:元组数据空间实际记录元素组数据特殊空间:特殊空间

每个记录的元组称为项目,每个项目由描述ID和元组数据组成。

项目描述ID描述元组存储位置,大小和一些状态标识符。

项目描述ID和项目数据分别存储在元组数据空间的中间,最早的项目具有最多的两个方面,稍后的数据处于中间。

0x251C

——

攀枝花新闻门户 版权所有© www.dgnuodiwujin.cn 技术支持:攀枝花新闻门户 | 网站地图