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

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

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

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

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

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

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

3、两种锁的使用场景

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

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

相关推荐
陌路202 小时前
MYSQL事务篇--事务隔离机制
数据库·mysql
清风6666663 小时前
基于单片机的PID调节脉动真空灭菌器上位机远程监控设计
数据库·单片机·毕业设计·nosql·课程设计·期末大作业
酩酊仙人3 小时前
ABP将ExtraProperties作为查询条件
数据库·postgresql·asp.net
在风中的意志3 小时前
[数据库SQL] [leetcode] 614. 二级关注者
数据库·sql
·云扬·3 小时前
MySQL Group Replication(MGR)核心特性全解析:从事务流程到一致性配置
数据库·mysql
陌路203 小时前
MYSQL事务篇--事务隔离机制的实现
数据库·mysql
oMcLin3 小时前
CentOS 7.9 高负载导致 MySQL 数据库性能下降:内存泄漏与配置优化
数据库·mysql·centos
auspicious航3 小时前
数据库同步技术演进:从备份转储到实时CDC的DBA实战指南
数据库·ffmpeg·dba
SmartRadio3 小时前
物联网云平台数据库选型与搭建全指南(LoRaWAN)
数据库·物联网·lora·lorawan