并发执行sql_blockingqueue 多线程

并发执行sql_blockingqueue 多线程来源:http://www.postgres.cn/docs/11/ 13.2.1. 读已提交隔离级别 读已提交是PostgreSQL中的默认隔离级别。 当一个事务运行使用这个隔离级别时,

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情况中被考虑的列集合是那些具有能用于外键的唯一索引的列(所以部分索引和表达式索引不被考虑),但是这种要求未来有可能会改变。

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/8578.html

(0)
上一篇 2023-02-26
下一篇 2023-02-26

相关推荐

  • IK分词器的安装与使用

    IK分词器的安装与使用分词器 什么是IK分词器? 分词:即把一段中文或者别的划分成一个个的关键字,我们在搜索时会把自己的信息进行分词,会把数据库中或者索引库中的数据进行分词,然后进行一个匹配操作,Elasticsearch

    2023-03-28
    159
  • Python程序错误:无效的过程或调用参数

    Python程序错误:无效的过程或调用参数“无效的过程或调用参数”是Python程序中常见的错误类型之一,当函数或方法的参数类型或数量不符合其定义时,就会引发这种错误。例如,如果一个函数期望传递一个字符串参数,但是传入了一个数字类型的参数,就会触发“无效的过程或调用参数”的错误。

    2023-12-08
    107
  • Python Tuples: 简洁高效的多元素数据结构

    Python Tuples: 简洁高效的多元素数据结构Python中的元组(Tuples)是一个有序的多元素集合,可以存储不同类型的数据。与列表相比,元组是一个不可变对象,即一旦创建就不能修改内容。元组被广泛应用于函数返回多个值或者在字典作为键使用的情况等。下面我们将通过如何创建、访问、修改以及结合其他对象使用等多个方面对Python元组进行详细讲解。

    2024-03-16
    77
  • mysql面试(二)用户管理类问题「建议收藏」

    mysql面试(二)用户管理类问题「建议收藏」如何定义MySQL数据库账号 用户名@可访问控制列表 % 可以从所有外部主机访问 192.168.1.%可以从192.168.1网段访问 localhost 从服务器本地访问 使用CREATE US…

    2022-12-16
    145
  • Python Args用法详解

    Python Args用法详解在Python编程中,使用函数进行开发是非常常见的操作。然而,当函数的参数数量增多时,函数调用的难度也会逐渐增加,同时参数传递的灵活性也会变得不够优秀。本文将会详细介绍Python中args参数的用法,以及在实际开发中的应用。

    2024-05-24
    63
  • 使用Anaconda进入虚拟环境

    使用Anaconda进入虚拟环境在实际编写python项目时,我们可能需要使用不同版本的Python解释器,或使用不同的第三方依赖库。而Anaconda便是一个非常方便的Python环境管理工具,它提供了虚拟环境的功能,让我们可以在同一台电脑上安装和管理多个Python环境,并且这些环境之间互不干扰。因此,在本文中,我们将介绍如何使用Anaconda进入虚拟环境。

    2024-07-22
    38
  • 别再写一摞if-else了!再写开除!两种设计模式带你消灭它!「建议收藏」

    别再写一摞if-else了!再写开除!两种设计模式带你消灭它!「建议收藏」代码洁癖狂们!看到一个类中有几十个if-else是不是很抓狂? 设计模式学了用不上吗?面试的时候问你,你只能回答最简单的单例模式,问你有没有用过反射之类的高级特性,回答也是否吗? 这次就让设计模式(模

    2023-03-11
    141
  • 图像数据增强python代码(图像增强Python)

    图像数据增强python代码(图像增强Python)以下提到的这些 Python 工具在编辑图像、操作图像底层数据方面都提供了简单直接的方法。

    2023-12-02
    118

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注