暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
SequoiaDB 分布式事务实现原理介绍.pdf
243
10页
0次
2021-02-22
50墨值下载
Tech | SequoiaDB
1. 分布式事务背景
随着分布式数据库技术的发展越来越成熟,业内对于分布式数据库的要求也由曾经只用满足
解决海量数据的存储和读取这类边缘业务向核心交易业务转变。分布式数据库如果要满足核
心账务类交易需求,则其需要完善分布式事务,向传统关系型数据库看齐。分布式事务的
实现也需要像传统关系型数据库的事务一样满足事务的标准要求及定义, ACID 特征
分布式数据库因为其数据是进行多机器多节点分散存储的,这样的存储架构为实现分布式事
务带来了极大的难度。数据事务操作时,事务操作会结合数据分布情况,到不同的存储位置
上去执行。而这个存储位置位于网络中的不同机器的不同磁盘上。
2. 事务基本概念
2.1 务使用场景
银行应用是一个经典案例,可以解释事务应用的必要性。假设银行数据库有两张表,支票账
户表(check)和存款账户表save)。现在要从 LiLei 的支票账户里转账 200 到她的存
账户,那么需要至少完成 3 步操作:
1. 检查支票存款账户的余额是否大 200 元;
2. 从支票存款账户余额中减去 200 元;
3. 在存款账户余额中增加 200 元;
所有的操作被打包在一个事务里执行,如果某一步失败,就回滚所有已完成步骤。事务操作
一般 START TRANSACTION 语句始一个事务 COMMIT 语句提交整个事务,永久地
改数据,或者 ROLLBACK 语句回滚整个事务,取消已做的修改。事务 SQL 操作样例如下
1. START TRANSACTION;
2. SELECT balance FROM check WHERE customer_id = 10233276 ;
3. UPDATE check SET balance = balance - 200.00 WHERE customer_id = 10233276;
4. UPDATE save SET balance = balance + 200.00 WHERE customer_id = 10233276;
5. COMMIT;
此为银行对于转账类的交易所必须使用的事务操作场景,而在实际的生产环境中,事务操作
的复杂度比这复杂得多。
2.2
事务概念和特性
事务是访问及操作数据库各类数据项的操作序列集合,如各类增删改查
SQL
操作组合。它通
常由
begin transaction
end transaction
语句来界定。
数据库系统的事务需包含以下特性:
原子(Atomicity):事务的所有操作在数据库中要么全部执行成功,要么全部执行
失败。
一致性(Correspondence):事务操作前后,数据的完整性必须保持一致。
离性(Isolation)个用户并发访问数据库时数据库为每个用户开启事务,不
能被其他事务的操作数据所干扰即每个事务都感觉不到系统中有其他事务在并发
地执行。
持久性(Durability)一个事务成功完成后,它对数据库的改变必须是永久的,即使
出现系统故障也不会对事务有影响。
2.3 务隔离级别
针对事务隔离,
SQL
标准定义了
4
类隔离级别包括了一些具体规则,用来限定事务内外
哪些改变是可见的,哪些是不可见的。下面介绍四种隔离级
:
READ UNCOMMITTED
(读取未提交内容)
READ UNCOMMITTED
隔离级别,所有事务都可以“看到”未提交事务的执行结果。读取
未提交数据,也被称之为“脏读”。
READ COMMITTED
(读取提交内容)
大多数数据库系统的默认隔离级是
read committed
它满足了隔离的早先单定义一个事务
在开始时,只能“看见”已经提交事务所做的改变,一个事务从开始到提交前,所做的任何
数据改变都是不可见的,除非已经提交。此隔离级别不支持“可重复读”操作。意味着
用户运行同一语句两次,看到的结果是不同的。
REPEATABLE READ
(可重读)
REPEATABLE READ
隔离解决
READ UNCOMMITTED
隔离导致的问。它确保一事
的多个实例在并发读取数据时,“看到同样的数据行。过理论上,会导致另一个棘
手问题:幻读
Phantom Read
单来说,幻读指当用户读取某一范围的数据行时,另一
个事务又在该范围内插入了新行,当用户再读取该范围的数据行时,会发现有新的“幻影”
行。数据库存储引擎可以通过多版本并发控制
(Multiversion Concurrency Control)
机制解决
幻读问题,如
MySQL
InnoDB
Falcon
SERIALIZABLE (
可串行化
)
SERIALIZABLE
是最高级别的隔离级,它通过强制事务排序,使之不可能相互冲突从而解
幻读问题。简言之,
SERIALIZABLE
是在每个读的数据行上加锁这个级别,能导致大量
的超时现象和锁竞争现象。数据库应用中很少看到有用户选择这种隔离级但如果用户的应
用为了数据的稳定性,需要强制减少并发的话,也可以选择这种隔离级。
3. 分布式事
分布式事务的实现需要保证事务的原子性、一致性、隔离性和持久性,而实现此
ACID
属性
的基本技术思路有:
通过“两阶段提交
Two-phase Commit
2PC
)”协议实现事务的原子性、一致性
和持久性等属性
隔离性级别的实现通常使用多版本并发控制机制来保证。实现多版本并发控制常用
的方式是“照隔离
Snapshot Isolation
)”技术;
of 10
50墨值下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜