首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
开篇词|为什么要学习分布式数据库?
01|什么是分布式数据库?
02|强一致性:那么多数据一致性模型,究竟有啥不一样?
03|强一致性:别再用BASE做借口,来看看什么是真正的事务一致性
04 | 架构风格:NewSQL和PGXC到底有啥不一样?
05 | 全局时钟:物理时钟和逻辑时钟你Pick谁?
06 | 分片机制:为什么说Range是更好的分片策略?
07 | 数据复制:为什么有时候Paxos不是最佳选择?
08 | 基础篇大串讲:重难点回顾+思考题答疑+知识全景图
09|原子性:2PC还是原子性协议的王者吗?
10 | 原子性:如何打破事务高延迟的魔咒?
11|隔离性:读写冲突时,快照是最好的办法吗?
12 | 隔离性:看不见的读写冲突,要怎么处理?
13 | 隔离性:为什么使用乐观协议的分布式数据库越来越少?
14 | 隔离性:实现悲观协议,除了锁还有别的办法吗?
15 | 分布式事务串讲:重难点回顾+思考题答疑+知识全景图
16 | 为什么不建议你使用存储过程?
17 | 为什么不建议你使用自增主键?
18 | HTAP是不是赢者通吃的游戏?
19 | 查询性能优化:计算与存储分离架构下有哪些优化思路?
20 | 关联查询:如何提升多表Join能力?
21 | 查询执行引擎:如何让聚合计算加速?
22|RUM猜想:想要读写快还是存储省?又是三选二
23 | 数据库查询串讲:重难点回顾+思考题答疑+知识全景图
24 | 全球化部署:如何打造近在咫尺且永不宕机的数据库?
25 | 容灾与备份:如何设计逃生通道保证业务连续性?
26 | 容器化:分布式数据库要不要上云,你想好了吗?
27 | 产品测试:除了性能跑分,还能测个啥?
28 | 选型案例:银行是怎么选择分布式数据库的?
29 | 产品图鉴:哪些分布式数据库值得看?
30 | 实践篇大串讲:重难点回顾+思考题答疑+知识全景图
当前位置:
首页>>
技术小册>>
分布式数据库入门指南
小册名称:分布式数据库入门指南
### 13 | 隔离性:为什么使用乐观协议的分布式数据库越来越少? 在分布式数据库系统的广阔领域中,隔离性(Isolation)是确保并发事务正确执行的关键特性之一,它定义了事务在执行过程中如何相互隔离,以避免数据不一致性的发生。随着技术的不断演进,分布式数据库在实现隔离性时,所采取的策略也在不断变化,其中,乐观协议(Optimistic Concurrency Control, OCC)与悲观协议(Pessimistic Concurrency Control, PCC)是两种主要的并发控制方法。近年来,一个显著的趋势是,越来越多的分布式数据库系统开始减少或避免使用乐观协议,转而采用或优化悲观协议及其他新型并发控制机制。本章将深入探讨这一现象背后的原因,分析乐观协议的局限性以及替代方案的优势。 #### 乐观协议的基本原理 乐观协议的核心思想是假设多个事务之间的冲突是罕见的,因此事务在执行过程中不会立即锁定资源,而是继续执行,直到事务提交阶段才检查是否存在冲突。如果存在冲突(即其他事务已经修改了该事务尝试修改的数据),则当前事务会被回滚,并可能重试。这种“乐观”的态度减少了事务执行期间的等待时间,提高了系统的吞吐量,特别是在冲突率低的环境下。 #### 乐观协议的局限性 尽管乐观协议在某些场景下表现优异,但随着分布式系统复杂度的增加和数据访问模式的多样化,其局限性日益凸显: 1. **高冲突环境下的性能下降**:在冲突频繁的场景中,乐观协议的性能会显著下降。由于事务频繁回滚和重试,不仅增加了系统的延迟,还可能引发级联回滚,进一步降低系统的稳定性和可预测性。 2. **版本控制开销**:为了实现乐观并发控制,系统需要为每个数据项维护版本号或时间戳,以便在事务提交时进行比较。这种额外的版本控制机制增加了存储和计算的开销,特别是在数据量大、更新频繁的应用中。 3. **编程复杂度**:乐观协议要求开发者在应用程序层面处理冲突和重试逻辑,这增加了编程的复杂性和出错的概率。同时,对于非专业人士来说,理解和维护这种并发控制机制也更为困难。 4. **难以处理复杂事务**:对于涉及多个资源、多个步骤的复杂事务,乐观协议的处理能力有限。在事务执行过程中,任何一步的冲突都可能导致整个事务的失败,从而降低了事务的成功率。 5. **分布式系统的不确定性**:在分布式环境下,网络延迟、节点故障等不确定性因素加剧了乐观协议的不稳定性。这些因素可能导致事务执行状态的不确定性,增加了冲突检测和解决的难度。 #### 替代方案的兴起 鉴于乐观协议的上述局限性,越来越多的分布式数据库系统开始探索并采用其他并发控制机制,以更好地满足现代应用的需求。以下是一些主要的替代方案: 1. **优化后的悲观协议**:通过改进锁的管理策略和冲突解决机制,悲观协议在保持强隔离性的同时,也提高了系统的性能和可扩展性。例如,多版本并发控制(MVCC)就是一种结合了悲观和乐观特性的并发控制方法,它在读操作上采用乐观策略,而在写操作上则采用悲观策略,从而实现了高效的读写并发。 2. **基于时间戳的并发控制**:这种机制通过为每个事务分配一个全局唯一的时间戳来协调事务的执行顺序。事务在提交时检查其修改是否违反了时间戳顺序,从而确保数据的一致性。与乐观协议相比,基于时间戳的并发控制不需要在事务执行过程中频繁检查冲突,减少了系统的开销。 3. **无锁并发控制**:近年来,无锁编程技术逐渐应用于分布式数据库领域。通过原子操作和内存屏障等机制,无锁并发控制能够在不引入显式锁的情况下保证数据的一致性。这种方法在高性能计算和低延迟应用中具有显著优势。 4. **智能调度和冲突预测**:一些先进的分布式数据库系统通过智能调度算法和冲突预测模型来优化事务的执行顺序和冲突解决策略。这些系统能够根据历史数据和当前系统状态动态调整并发控制策略,以提高系统的整体性能和稳定性。 #### 结论 综上所述,随着分布式数据库技术的不断发展和应用场景的不断拓展,乐观协议在并发控制方面的局限性日益凸显。为了应对这些挑战,越来越多的分布式数据库系统开始减少或避免使用乐观协议,转而采用或优化其他并发控制机制。这些替代方案在保持强隔离性的同时,也提高了系统的性能、可扩展性和稳定性,从而更好地满足了现代应用的需求。因此,在未来的分布式数据库设计中,我们需要综合考虑各种并发控制机制的优缺点,选择最适合当前应用场景的解决方案。
上一篇:
12 | 隔离性:看不见的读写冲突,要怎么处理?
下一篇:
14 | 隔离性:实现悲观协议,除了锁还有别的办法吗?
该分类下的相关小册推荐:
Linux零基础到云服务
CI和CD代码管理平台实战
云计算那些事儿:从IaaS到PaaS进阶(三)
shell脚本编程高手速成
Redis数据库高级实战
Web服务器Apache详解
从 0 开始学架构
Web安全攻防实战(下)
云计算那些事儿:从IaaS到PaaS进阶(一)
RPC实战与核心原理
Redis入门到实战
高并发架构实战