PostgreSQL中repeatable read事务隔离级别为什么不会出现幻读 您所在的位置:网站首页 立刻怎么念 PostgreSQL中repeatable read事务隔离级别为什么不会出现幻读

PostgreSQL中repeatable read事务隔离级别为什么不会出现幻读

2024-07-14 16:23| 来源: 网络整理| 查看: 265

在查看PostgreSQL-11.5官方文档的时候发现,pg中repeatable read隔离级别下是不会出现幻读的。如下图标红处所示:

PostgreSQL事务隔离级别

什么是幻读? 下面是官方的解析:

phantom read

A transaction re-executes a query returning a set of rows that satisfy a search condition and finds that the set of rows satisfying the condition has changed due to another recently-committed transaction.

大概意思指在一个事务中相同的SQL查询条件前后读取到的结果不一致,原因是后者读取到了其他事务中新提交的数据。

数据读取,实际上读取的是一种状态数据;数据库中所说的“事务”,可以理解为数据在某个时间的一致性状态,每当产生一个新的事务,数据将从上一个事务的状态进入到新事务中的状态。“事务快照”本质上代表的是某个时刻数据状态的一个定格。

一、事务快照介绍

事务快照transaction snapshot,表示某个时刻事务的状态。既然是状态,我在这里对事务快照的理解为三个阶段:一个transaction snapshot将事务划分为过去的、当前的、未来的三个范围区域。

PostgreSQL中事务快照的状态信息包括如下内容:

xmin,当前处于active状态的最小事务编号;

xmax,未来产生的事务中,第一个被分配的事务编号;

xip_list,当前处于active 状态的事务列表。

如下,查看当前时刻事务快照:

(postgres@[local]:5432)[akendb01]#select txid_current_snapshot();txid_current_snapshot-----------------------639:642:639,640


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有