乐观锁和悲观锁
乐观锁和悲观锁是两种并发控制策略,用于解决多线程或多进程访问同一资源时的数据一致性问题。
乐观锁
- 概念:假设数据很少被修改,因此不会在数据访问前加锁。
- 机制:读取数据时不加锁,更新时检查数据是否被修改(通常通过版本号或时间戳)。如果数据没有变化,则提交修改;否则,操作失败,需要重试。
- 适用场景:适合读多写少的场景,避免因频繁加锁导致的性能问题。
悲观锁
- 概念:假设数据会被频繁修改,因此在访问前加锁。
- 机制:读取或修改数据时加锁,确保同一时间只有一个事务可以操作数据。其他尝试获取锁的事务会被阻塞,直到锁被释放。
- 适用场景:适合写多读少的场景,需要严格控制数据一致性。
例子
- 乐观锁:电商网站的库存管理系统,用户读取商品信息时不加锁,提交订单时检查库存是否改变。
- 悲观锁:银行转账系统,在进行账户余额更新时加锁,以确保数据一致性。
选择使用哪种锁策略取决于系统的读写比例和对并发的要求。
我要评论
文章归档
2024 年 12 月
2
2024 年 10 月
2
2024 年 09 月
2
2024 年 07 月
1
2024 年 06 月
1
2024 年 04 月
1
2024 年 03 月
1
2024 年 01 月
2
2023 年 11 月
2
2023 年 10 月
1
文章日历
2024 年 12 月 | ||||||
---|---|---|---|---|---|---|
日 | 一 | 二 | 三 | 四 | 五 | 六 |
01 | 02 | 03 | 04 | 05 | 06 | 07 |
08 | 09 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
30 | 31 | 01 | 02 | 03 | 04 | 05 |
文章标签
- Linux
- Go
- Yii
- 新浪
- CentOS
- PHP
- Git
- WSL
- Composer
- Mac
- 入职
- Bootstrap
- pyenv
- UCenter
- 厦门
- 出差
- 长沙
- 湖南卫视
- 微博
- Tengine
- YUI
- 泰国
- pecl
- 优化
- GitLab
- 迁移
- rootless
- 年会
- 生日
- Tengin
- RedHat
- Sphinx
- cygwin
- Windows
- Tmux
- Zsh
- 升级
- MySQL
- sql_mode
- Shadowsockets
- 面向对象
- HTTP
- 状态码
- grep
- unoconv
- PPT
- Nginx
- htpasswd
- golang
共 0 条评论