首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

对于postgres中的READ_COMMITED,通过select更新是原子的吗?

对于postgres中的READ_COMMITTED隔离级别,通过select更新是原子的。

在READ_COMMITTED隔离级别下,每个事务只能看到已经提交的数据,而不能看到其他事务尚未提交的数据。当一个事务执行select语句时,它会获取一个快照,该快照包含了事务开始时数据库中的数据状态。因此,即使其他事务在该事务执行select语句之后更新了数据,该事务仍然只能看到select语句执行时的数据状态。

如果在READ_COMMITTED隔离级别下执行select语句后立即执行更新操作,更新操作将会在一个新的事务中执行。这意味着更新操作不会被select语句所影响,因为它们在不同的事务中执行。因此,通过select更新在READ_COMMITTED隔离级别下是原子的,即更新操作要么完全执行,要么完全不执行。

推荐的腾讯云相关产品是腾讯云数据库 PostgreSQL,它是腾讯云提供的一种高性能、可扩展的关系型数据库服务。腾讯云数据库 PostgreSQL 提供了丰富的功能和工具,可以满足各种应用场景的需求。您可以通过以下链接了解更多关于腾讯云数据库 PostgreSQL 的信息:

https://cloud.tencent.com/product/postgres

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

举例说明四种事务隔离级别有何差别?

马克-to-win:比 如说:窗口1是READ-UNCOMMITTED级别,而窗口2是REPEATABLE-READ级别。(如何设置隔离级别,请参见“缺省隔离级别是怎么 回事?如何改变?”)这样,我窗口1读数据时,能看到其他窗口update以后还没有commited的数据。换句话说,你update以后,即使没有提 交,我都能看见。而因为你的级别是REPEATABLE-READ。这个隔离级别比较高,换句话说就是隔离度高。我更新完数据后,你看不到。马克-to-win:你要想看到我 更新的数据,必须得我提交以后,而且你也得提交完成你的transaction(事务)。咱们俩都尘埃落定了,你才能看到我更新的数据。因为这样做其实就 怕我回滚或者你回滚。如果我的窗口1的隔离级别刚才不是设成READ_UNCOMMITTED,而是设成READ_COMMITTED,则我的窗口1只能 看到你commited以后的数据。你不commit的话,当我select * from table时,只能看到以前的数据,你update以后而未提交的变化数据,我一点儿都看不见。同样,如果我的窗口1的隔离级别刚才不是设成 READ_UNCOMMITTED,而是设成SERIERLIZED的话,这是隔离级别最高的一种隔离,可以说隔离得最彻底。我窗口1开始 Transaction(事务)以后,即使我随随便便select * from table一下,你的Transaction之后都无法update。但如果说是你先进的transaction,你update之后,在你没提交之前, 我的普通的select * from table都不能执行。

02
领券