22、数据库的乐观锁和悲观锁是什么?怎么实现的?

数据库管理系统(DBMS)中的并发控制的任务是确保在多个事务同时存取数据库中同一数据时满足ACID原则。

乐观锁和悲观锁是并发控制主要采用的技术手段

1、悲观锁:假定会发生并发冲突,屏蔽一切可能违反数据完整性的操作。在查询完数据的时候就把事务锁起来,直到提交事务。

实现方式:使用数据库中的锁机制

2、乐观锁:假设不会发生并发冲突,只在提交操作时检查是否违反数据完整性。在修改数据的时候把事务锁起来,通过version的方式来进行锁定。

实现方式:乐观锁一般会使用版本号机制或CAS算法实现。

3、两种锁的使用场景

从上面对两种锁的介绍,我们知道两种锁各有优缺点,不可认为一种好于另一种,像乐观锁适用于读多写少对场景,即冲突较少对场景,这样可以省去了锁的开销,加大了系统的整个吞吐量。

但如果是多写的情况,一般会经常产生冲突,这就会导致上层应用会不断的进行retry,这样反倒是降低了性能,所以一般多写的场景下用悲观锁就比较合适。

相关推荐
Liu6288810 分钟前
Web开发与API
jvm·数据库·python
m0_7434703713 分钟前
Python字典与集合:高效数据管理的艺术
jvm·数据库·python
2501_9454235414 分钟前
使用Scrapy框架构建分布式爬虫
jvm·数据库·python
yhole15 分钟前
MySQL无法连接到本地localhost的解决办法2024.11.8
数据库·mysql·adb
2401_8512729918 分钟前
使用Python进行量化交易入门
jvm·数据库·python
jinanmichael21 分钟前
mysql用户名怎么看
数据库·mysql
李少兄28 分钟前
企业资源计划(ERP)系统全景指南
java·前端·数据库·erp
marsh020634 分钟前
17 openclaw数据库连接池配置:避免性能瓶颈的关键
数据库·ai·oracle·编程·技术
2301_818419011 小时前
Python内存管理机制:垃圾回收与引用计数
jvm·数据库·python