PosegreSQL基础回顾(第 13 章 并发控制)

编程之家收集整理的这篇文章主要介绍了PosegreSQL基础回顾(第 13 章 并发控制)编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

来源:http://www.postgres.cn/docs/11/

13.2.1. 读已提交隔离级别

读已提交Postgresql中的认隔离级别。 当一个事务运行使用这个隔离级别时, 一个查询(没有FOR UPDATE/SHARE子句)只能看到查询开始之前已经被提交的数据, 而无法看到未提交的数据或在查询执行期间其它事务提交的数据。

  • 实际上,SELECT查询看到的是一个查询开始运行的瞬间该数据库一个快照。
  • 不过SELECT可以看见在它自身事务中之前执行的更新的效果,即使它们还没有被提交。
  • 还要注意的是,即使在同一个事务里两个相邻的SELECT命令可能看到不同的数据, 因为其它事务可能会在第一个SELECT开始和第二个SELECT开始之间提交。

更多

 

13.3.2. 行级锁

 除了表级锁以外,还有行级锁,在下文列出了行级锁以及在哪些情境下Postgresql自动使用它们。行级锁的完整冲突表请见表 13.3。注意一个事务可能会在相同的行上保持冲突的锁,甚至是在不同的子事务中。但是除此之外,两个事务永远不可能在相同的行上持有冲突的锁。行级锁不影响数据查询,它们只阻塞对同一行的写入者和加锁者

 

行级锁模式

FOR UPDATE

FOR UPDATE会导致由SELECT语句检索到的行被锁定,就好像它们要被更新。这可以阻止它们被其他事务锁定、修改或者删除,一直到当前事务结束。也就是说其他尝试UPDATEDELETESELECT FOR UPDATESELECT FOR NO KEY UPDATESELECT FOR SHARE或者SELECT FOR KEY SHARE这些行的事务将被阻塞,直到当前事务结束。反过来,SELECT FOR UPDATE将等待已经在相同行上运行以上这些命令的并发事务,并且接着锁定并且返回被更新的行(或者没有行,因为行可能已被删除)。不过,在一个REPEATABLE READSERIALIZABLE事务中,如果一个要被锁定的行在事务开始后被更改,将会抛出一个错误。进一步的讨论请见第 13.4 节

任何在一行上的DELETE命令也会获得FOR UPDATE锁模式,在某些列上修改值的UPDATE也会获得该锁模式。当前UPDATE情况中被考虑的列集合是那些具有能用于外键的唯一索引的列(所以部分索引和表达式索引不被考虑),但是这种要求未来有可能会改变。

 

总结

以上是编程之家为你收集整理的PosegreSQL基础回顾(第 13 章 并发控制)全部内容,希望文章能够帮你解决PosegreSQL基础回顾(第 13 章 并发控制)所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!

相关文章

猜你在找的Postgre SQL相关文章

死锁的成因与解决方式
数据库中的表达式
背景 PolarDB PostgreSQL(以下简称PolarDB)是一款阿里云自主研发的企业级数据库产品,采用计算存储分离架构,兼容PostgreSQL与Oracle。PolarDB 的存储与计算能
背景介绍 PolarDB采用了共享存储一写多读架构,读写节点RW和多个只读节点RO共享同一份存储,读写节点可以读写共享存储中的数据;只读节点仅能各自通过回放日志,从共享存储中读取数据,而不能写入,只读
什么是PolarDB PostgreSQL PolarDB PostgreSQL(下文简称为PolarDB)是一款阿里云自主研发的云原生数据库产品,100%兼容PostgreSQL,采用基于Share
本章介绍SQL的语法。它是理解后面章节的基础,它们详细描述了SQL如何用于定义和修改数据。对于已经熟悉SQL的用户,同样应该仔细阅读本章,因为它包含了各个SQL数据库中实现方式不同的一些规则和概念,这些是PostgreSQL特有的属性。4.1. 词法结构SQL输入由一系列命令组成。命令由一系列符号组成,以分号(“;”)结束。输入流的结束也会结束一个命令。每个命令能够使用的符号不尽相同。
本章讲述如何创建用于存储数据的数据库结构。在关系数据库中,原始数据存储在表中,因此本章主要涉及如何创建和修改表,以及控制表中存储的数据的特性。然后,我们讨论了如何在模式中组织表,以及表的权限管理。最后,我们将简单了解与数据存储有关的其他特性,例如继承,视图,函数和触发器。5.1. 表的基础知识 关系数据库中的表就像书面上的表格一样:由行和列组成。列的数量和顺序是固定的,并且每个列有一个...
上一章讨论了如何创建存储数据的表和其他结构。接下来就需要往表中填充数据。本章设计如何插入,更新,以及删除表中的数据。下一章将最后说明如何从数据库中查询久违的数据。6.1. 插入数据 表刚被创建时,没有任何数据。数据库能够使用之前的第一件事就是插入数据。从概念上讲,每次插入一行数据。当然你也可以插入多行数据,但是无法插入少于一行的数据。即使你只知道某些字段值,也必须创建一个完整的行。I...
微信公众号搜索 “ 程序精选 ” ,选择关注!
微信公众号搜 "程序精选"关注