Java常见技术分享-26-事务安全-锁机制-作用与分类

锁机制的作用

为了保证数据库事务的ACID 特性。 尤其是CI 一致性和隔离性。

锁的分类

锁的访问权限来分
  • 共享锁, 允许多个读
  • 排他锁(独占锁/互斥锁) , 只允许一个写
锁的粒度
  • 表锁
    • 直接锁定整个表, 开销小,但是并发效率低, 适合需要更新全表数据的场景
  • 行锁
    • 只锁定需要操作的哪一行数据, 开销大, 并发性能高, 适合多个用户同时操作不同行数据的场景
对于并发冲突的预期区分
  • 乐观锁
    • 比如版本号机制, 给表加一个字段version, 每次查询数据时 也把 version查出来, 当要更新数据时, 会在 update语句的where条件 带上version 之前查出来的, 如果执行后, 发现影响行数是0 , 说明 数据的版本已经 不是之前查出来的数值了, 已经有别的 事务修改过了。 这时你可以选择重试 或者 直接失败, 优点是并发性能好, 缺点是 需要额外处理尝试逻辑。(数据库本身自带的乐观锁机制)
  • 悲观锁
    • 比如select ... for update 他会给查询到的数据加上排他锁, 其他的事务想修改 就得 等到 当前事务提交 或者 回滚释放锁。 可以有效的防止并发冲突, 缺点是 降低并发性能。
相关推荐
一定要AK2 小时前
Spring 入门核心笔记
java·笔记·spring
A__tao2 小时前
Elasticsearch Mapping 一键生成 Java 实体类(支持嵌套 + 自动过滤注释)
java·python·elasticsearch
KevinCyao2 小时前
java视频短信接口怎么调用?SpringBoot集成视频短信及回调处理Demo
java·spring boot·音视频
科技小花3 小时前
数据治理平台架构演进观察:AI原生设计如何重构企业数据管理范式
数据库·重构·架构·数据治理·ai-native·ai原生
lly2024063 小时前
C 标准库 - `<stdio.h>`
开发语言
一江寒逸3 小时前
零基础从入门到精通MySQL(中篇):进阶篇——吃透多表查询、事务核心与高级特性,搞定复杂业务SQL
数据库·sql·mysql
沫璃染墨3 小时前
C++ string 从入门到精通:构造、迭代器、容量接口全解析
c语言·开发语言·c++
jwn9993 小时前
Laravel6.x核心特性全解析
开发语言·php·laravel
D4c-lovetrain3 小时前
linux个人心得22 (mysql)
数据库·mysql
迷藏4943 小时前
**发散创新:基于Rust实现的开源合规权限管理框架设计与实践**在现代软件架构中,**权限控制(RBAC)** 已成为保障
java·开发语言·python·rust·开源