当前位置: 首页 > news >正文

GaussDB 八种常规锁介绍

1 锁产生背景

并发与一致性的矛盾,在多用户的数据库系统中,并发访问和数据一致性是两核需求,但它们天然存在矛盾。

  1. 无锁数据问题:若多个事务同时修改同一数据,可能导致数据混乱(如银行转账时余额计算错误)
  2. 串行低效问题:若强制所有事务串行执行,数据库吞吐量将大幅下降。

通过控制对共享资源的访问顺序,在保证数据一致性的前提下,尽可能提高并发度。

2 常规锁作用

用于确保SQL操作的数据一致性,即:ACID特性。

3 八种常规锁产生场景

编号

锁模式

产生场景

1

AccessShareLock

当对一个对象进行查询SELECT操作时,会申请该类型的锁,AccessShareLock是最低级别的锁,相当于读写中的共享锁。

2

RowShareLock

当查询命令指定了FOR update/share时,会申请该类型的锁

3

RowExclusiveLock

当对数据对象做增删改操作时,会申请该类型的锁,例如对某个表做插入,删除,更新操作时,需要申请该类型的锁。

4

ShareUpdateExclusiveLock

当执行vacuum(non-full)、analyze、create index concurrently时,需要申请该类型的锁

5

Sharelock

主要用于创建索引时申请该类型的锁

6

ShareRowExclusiveLock

和exclusive相似,但和RowShareLock兼容

7

ExclusiveLock

和AccessExclusivelock类似,但和最低别的读锁AccessSharelock兼容

8

AcsessExclusiveLock

在对元数据(系统表)做DDL操作时,会申请该类型的锁,AccessExclusiveLock与其他所有的锁模式都不相容。

4 解决经典问题

  1. 写冲突问题
  2. 事务隔离问题
  • 脏读:事务A读取到事务B未提交的数据
  • 不可重复读:事务A两次读取的同一数据结果不同
  • 幻读:事务A两次查询同一数据范围,结果集行数不同

 

     3. 数据完整性问题

  • 外键约束:锁定关联表记录,确保引用完整性
  • 唯一约束:锁定唯一索引,防止重复插入。

     加意向排他锁(intention Exclusive lock): 锁定索引条目,防止其他事务同时插入相同值

并发场景下保证数据一致性,既要保证一定性能,又要数据安全。

 

http://www.xdnf.cn/news/1326025.html

相关文章:

  • MoonBit Perals Vol.06: Moonbit 与 LLVM 共舞 (上):编译前端实现
  • CloudDM 新增支持 GaussDB 与 openGauss:国产数据库管理更高效
  • wx小游戏canvas能力封装
  • 推理还是训练 || KV缓存和CoT技术
  • 云原生堡垒机渗透测试场景
  • 应急响应常见命令
  • 代码随想录刷题——字符串篇(七)
  • ChatBI驱动的智能商业决策:奥威BI的深度实践
  • Java多线程:线程创建、安全、同步与线程池
  • 常见的 Bash 命令及简单脚本
  • C语言实战:从零开始编写一个通用配置文件解析器
  • SpringAI——向量存储(vector store)
  • 电子电气架构 --- 软件项目成本估算
  • UE5 PCG 笔记(一)
  • 零基础数据结构与算法——第八章 算法面试准备-数组/字符串/链表/树/动态规划/回溯
  • JVM之Java内存区域与内存溢出异常
  • Python + 淘宝 API 开发:自动化采集商品数据的完整流程​
  • 8.19作业
  • 星图云开发者平台新功能速递 | 微服务管理器:无缝整合异构服务,释放云原生开发潜能
  • 部署tomcat应用时注意事项
  • 数据迁移:如何从MySQL数据库高效迁移到Neo4j图形数据库
  • 高性能AI推理与工作站GPU:DigitalOcean L40s、RTX 6000 Ada与A6000全解析
  • UniApp 微信小程序之间跳转指南
  • Leetcode 343. 整数拆分 动态规划
  • 【最新版】CRMEB Pro版v3.4系统源码全开源+PC端+uniapp前端+搭建教程
  • LLM 中 token 简介与 bert 实操解读
  • 大语言模型中的归一化实现解析
  • Vim笔记:缩进
  • AiPPT怎么样?好用吗?
  • Qt密码生成器项目开发教程 - 安全可靠的随机密码生成工具