【postgresql】锁

news2024/9/20 18:28:24

PostgreSQL 提供了多种锁模式来控制对表和行的并发访问,以确保数据的一致性和完整性。这些锁模式包括表级锁和行级锁,它们可以由应用程序显式控制,也可以在执行大多数 PostgreSQL 命令时自动获取。

锁类型

PostgreSQL类型的锁包括:

  • 表级锁(Table-Level Locks)

    • ACCESS SHARE:通常在SELECT语句中自动获取,只与ACCESS EXCLUSIVE锁冲突。

    • ROW SHARE:通常在SELECT FOR UPDATE/FOR SHARE语句中自动获取,与EXCLUSIVEACCESS EXCLUSIVE锁冲突。

    • ROW EXCLUSIVE:通常在INSERT、UPDATE、DELETE语句中自动获取,与SHARESHARE ROW EXCLUSIVEEXCLUSIVEACCESS EXCLUSIVE锁冲突。

    • SHARE UPDATE EXCLUSIVE:保护表不受并发模式改变和VACUUM的影响,与SHARE UPDATE EXCLUSIVESHARESHARE ROW EXCLUSIVEEXCLUSIVEACCESS EXCLUSIVE锁冲突。

    • SHARE:通常在CREATE INDEX语句中自动获取,与ROW EXCLUSIVESHARE UPDATE EXCLUSIVESHARE ROW EXCLUSIVEEXCLUSIVEACCESS EXCLUSIVE锁冲突。

    • SHARE ROW EXCLUSIVE:保护表不受并发数据修改,与ROW EXCLUSIVESHARE UPDATE EXCLUSIVESHARESHARE ROW EXCLUSIVEEXCLUSIVEACCESS EXCLUSIVE锁冲突。

    • EXCLUSIVE:允许并发只读访问,但阻止其他事务进行写操作,与ROW SHAREROW EXCLUSIVESHARE UPDATE EXCLUSIVESHARESHARE ROW EXCLUSIVEEXCLUSIVEACCESS EXCLUSIVE锁冲突。

    • ACCESS EXCLUSIVE:最高级别的锁,确保只有持有锁的事务可以访问表,与所有类型的锁冲突。

  • 行级锁(Row-Level Locks)

    • FOR UPDATE:锁定选定的行,防止其他事务对这些行进行修改或删除。

    • FOR NO KEY UPDATE:类似于FOR UPDATE,但不阻止其他事务对这些行进行SELECT FOR KEY SHARE。

    • FOR SHARE:类似于FOR UPDATE,但只锁定读取的行,不阻止其他事务对这些行进行修改。

    • FOR KEY SHARE:类似于FOR SHARE,但只阻止其他事务对这些行进行DELETE或UPDATE关键字列。

使用锁

通过以下方式显式地获取锁:

LOCK TABLE table_name IN lock_mode_name MODE;

获取一个表的ACCESS EXCLUSIVE锁:

BEGIN;

LOCK TABLE my_table IN ACCESS EXCLUSIVE MODE;

COMMIT;

检测和解决死锁

以通过查询系统视图 pg_lockspg_stat_activity 来检测死锁和锁定情况。例如,查询特定表的锁情况可以使用以下 SQL 语句:

SELECT a.locktype, a.database, a.pid, a.mode, a.relation, b.relname
FROM pg_locks a
JOIN pg_class b ON a.relation = b.oid
WHERE upper(b.relname) = 'TABLE_NAME';




本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1925860.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【JavaEE】网络编程——TCP

🤡🤡🤡个人主页🤡🤡🤡 🤡🤡🤡JavaEE专栏🤡🤡🤡 文章目录 前言1.网络编程套接字1.1流式套接字(TCP)1.1.1特点1.1.2编码1.1.2.1ServerSo…

开发个人Ollama-Chat--10 绑定域名

开发个人Ollama-Chat–10 绑定域名 域名购买最好找正规的渠道购买,不要因贪图小便宜而多走很多的弯路。我就是第一次购买域名,到了一个坑壁的平台"西部数码",SSL证书申请了2个月,没下来,客服也贼不专业&…

SAP 消息输出 - Adobe Form

目录 1 安装链接 2 前台配置 - Fiori app 2.1 维护表单模板 (maintain form templates) 2.2 管理微标 (manage logos) 2.3 管理文本 (manage texts) 3 后台配置 3.1 定义表单输出规则 3.2 分配表单模板 SAP 消息输出,不仅是企业内部用来记录关键业务操作也是…

GAN 如何打造人造名人身份?

GAN 如何打造人造名人身份? 文章目录 一、介绍二、生成对抗网络(GAN)三、什么是发电机?四、什么是鉴别器?五、对抗性训练六、实现七、数据7.1 初始配置和设置7.2 数据加载器7.3 噪声产生7.4 发电机7.5 鉴别器 八、训练…

Appium自动化测试系列: 2. 使用Appium启动APP(真机)

历史文章:Appium自动化测试系列: 1. Mac安装配置Appium_mac安装appium-CSDN博客 一、准备工作 1. 安卓测试机打开调试模式,然后使用可以传输数据的数据线连接上你的电脑。注意:你的数据线一定要支持传输数据,有的数据线只支持充…

computed计算属性用法及方法对比

模板中的插值表达式虽然方便,但当要写复杂逻辑时就会变得臃肿,难以维护,遇上复杂逻辑时,推荐使用计算属性来描述以响应式状态的复杂逻辑。这里我们做个对比,先用表达式的方法进行计算,先把页面写好&#xf…

WIN10开机突然,过一会就自动重启蓝屏DRIVER_IRQL_NOT_LESS_OR_EQUAL

环境: Win10 专业版 DELL7080 问题描述: WIN10开机突然,过一会就自动重启蓝屏DRIVER_IRQL_NOT_LESS_OR_EQUAL 事件日志 解决方案: 1.找到MEMORY.DMP文件内容,分析一下 Microsoft (R) Windows Debugger Version 10…

rabbitmq集群创建admin用户之后,提示can access virtual hosts是No access状态

问题描述: 因业务需要使用的rabbitmq是3.7.8版本的,rabbitmq在3.3.0之后就允许使用guest账号的权限了,所以需要创建一个administrator标签的用户。 如下操作创建的用户: 创建完成之后就提示如下的报错: 注&#xff1a…

探索大模型:袋鼠云在 Text To SQL 上的实践与优化

Text To SQL 指的是将自然语言转化为能够在关系型数据库中执行的结构化查询语言(简称 SQL)。近年来,伴随人工智能大模型技术的不断进步,Text To SQL 任务的成功率显著提升,这得益于大模型的推理、理解以及指令遵循等能…

postman macOS版安装包

链接: https://pan.baidu.com/s/1Y7j4mxB1Otmf3Ku41e7v7w?pwdfy99 提取码: fy99 安装后的效果

【QT】窗口MainWindow

目录 窗口的组成 菜单栏 图形化创建菜单栏 代码创建菜单栏 给菜单设置快捷键 添加子菜单 添加分割线 添加图标 创建menuBar的细节 工具栏 设置工具栏出现的初始位置(上下左右) 设置工具栏允许停靠的位置 设置不允许浮动 设置不允许移动…

【STM32项目】基于嵌入式智能网控微嵌式远距操控平台(完整工程资料源码)

基于嵌入式智能网控微嵌式远距操控平台 目录: 前言: 一、项目前景调研 1.1 研究背景及意义 1.2 国内外发展现状及趋势 1.2.1 国内现状 1.2.2 国外发展现状 1.2.3 发展趋势 二、什么是嵌入式? 2.1 嵌入式系统概述 2.2 嵌入式系统的组成 2.3 嵌入式操作系统…

camera-qsc-crosstalk校准数据XTALK回写

问题背景 手机越做越紧凑,需要模组和芯片尺寸越做越小,在尺寸一定的基础上,高像素和大像素,对于手机摄像头来说,一直是一对矛盾的存在。 高像素:带来高分辨率画质大像素:带来暗态下高感光度和…

【java】力扣 反转链表

力扣 206 链表反转 题目介绍 解法讲解 先定义两个游标indexnull,prenull,反转之后链表应该是5,4,3,2,1,我们先进行2->1的反转,然后再循坏即可 让定义的游标index去存储head.n…

RocketMQ~消息的种类与生命周期(普通消息、延时定时消息、事务消息)

普通消息 普通消息一般应用于微服务解耦、事件驱动、数据集成等场景,这些场景大多数要求数据传输通道具有可靠传输的能力,且对消息的处理时机、处理顺序没有特别要求。 以在线的电商交易场景为例,上游订单系统将用户下单支付这一业务事件封…

im即时通讯系统有哪些?

IM即时通讯系统是一种通过互联网和移动通信网络实现实时通信的系统。在众多IM即时通讯系统中,WorkPlus作为企业级IM即时通讯系统,提供了全面的通讯和协作解决方案。本文将介绍几种常见的IM即时通讯系统,以及WorkPlus作为企业级IM即时通讯系统…

第三方配件也能适配苹果了,iOS 18与iPadOS 18将支持快速配对

苹果公司以其对用户体验的不懈追求和对创新技术的不断探索而闻名。随着iOS 18和iPadOS 18的发布,苹果再次证明了其在移动操作系统领域的领先地位。 最新系统版本中的一项引人注目的功能,便是对蓝牙和Wi-Fi配件的配对方式进行了重大改进,不仅…

【自动驾驶汽车通讯协议】UART通信详解:理解串行数据传输的基石

文章目录 0. 前言1. 同步通讯与异步通讯1.1 同步通信1.2 异步通信 2. UART的数据格式3. 工作原理3.1 波特率和比特率3.2 UART的关键特性 4. UART在自动驾驶汽车中的典型应用4.1 UART特性4.2应用示例 5. 结语 0. 前言 按照国际惯例,首先声明:本文只是我自…

html5——列表、表格

目录 列表 无序列表 有序列表 自定义列表 表格 基本结构 示例 表格的跨列 表格的跨行 列表 无序列表 <ul>【声明无序列表】 <li>河间驴肉火烧</li>【声明列表项】 <li>唐山棋子烧饼</li> <li>邯郸豆沫</li> <l…

pyinstaller教程(二)-快速使用(打包python程序为exe)

1.介绍 PyInstaller 是一个强大的 Python 打包工具&#xff0c;可以将 Python 程序打包成独立的可执行文件。以下会基于如何在win系统上将python程序打包为exe可执行程序为例&#xff0c;介绍安装方式、快速使用、注意事项以及特别用法。 2.安装方式 通过 pip 安装 PyInstal…