暂无图片
暂无图片
3
暂无图片
暂无图片
暂无图片

OceanBase系统架构数据并发性和一致性概述

2024-02-01
250

数据并发性

为了更好地提高事务的处理能力,数据库允许用户通过事务并发地访问与修改同一个数据,我们需要为这种数据并发性来定义语义。

数据一致性

数据库通过维护每次更改,产生新的版本,从而做到读写不互斥, 这被称为多版本并发控制(MVCC)。对于不同的事务版本,我们需要为这种数据多版本来定义语义,保证用户看到一个一致的数据库状态,即数据的一致性快照。

说明

数据一致性不等价于 ACID 中的 C (Consistency)。

并发控制

以上两种语义我们称为并发控制模型,也就是 ACID 中的 I (Isolation level).

最简单的并发控制就是串行(serial)执行, 其中串行执行是指一个进程在另一个进程执行完(收到触发操作的回应)一个操作前不会触发下一个操作. 但这明显不符合高并发的需求. 因此学者们提出了一种可串行化(serializable),即可以通过并行(非串行)地执行事务内的多个操作, 但是最终需要达到和串行执行相同的结果。

有两种常见的实现机制, 即两阶段锁和乐观锁机制。前者是通过排它地通过加锁限制其他的事务的冲突修改,并通过死锁检测机制回滚产生循环的事务保证无环;后者通过在提交时的检测阶段,回滚所有可能会导致异常的事务保证不会产生异常。

但是实际上上述两种实现机制提供可串行化隔离级别会极大地影响性能,因此一般会通过允许一些容易接受的成环条件来暴露一些异常,并增加事务的性能和可扩展性。其中快照读和读已提交是比较常见的允许异常的并发控制, 也是 OceanBase 数据库的选择。如何定义隔离级别的抽象,能给予使用者在性能上和语义易用性上的平衡感是设计事务隔离级别(Isolation)的关键之一。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论