巨杉数据库SequoiaDB巨杉Tech

1

分布式事务背景

随着分布式数据库技术的发展越来越成熟,业内对于分布式数据库的要求也由曾经只用满足解决海量数据的存储和读取这类边缘业务向核心交易业务转变。分布式数据库如果要满足核心账务类交易需求,则其需要完善分布式事务,向传统关系型数据库看齐。即分布式事务的实现也需要像传统关系型数据库的事务一样满足事务的标准要求及定义,即ACID特征。

分布式数据库的数据是进行多机器多节点分散存储的,这样的存储架构为实现分布式事务带来了极大的难度。数据事务操作时,事务操作会结合数据分布情况,到不同的存储位置上去执行,而这个存储位置位于网络中的不同机器的不同磁盘上。

2

事务基本概念

2.1事务使用场景

银行应用是一个经典案例,可以解释事务应用的必要性。假设银行数据库有两张表,支票账户表(check)和存款账户表(save)。现在要从LiLei的支票账户里转账元到她的存款账户,那么需要至少完成3步操作:

1.检查支票存款账户的余额是否大于元;

2.从支票存款账户余额中减去元;

3.在存款账户余额中增加元;

所有的操作被打包在一个事务里执行,如果某一步失败,就回滚所有已完成步骤。事务操作一般用STARTTRANSACTION语句开始一个事务,用COMMIT语句提交整个事务,永久地修改数据,或者用ROLLBACK语句回滚整个事务,取消已做的修改。事务SQL操作样例如下:

STARTTRANSACTION;

SELECTbalanceFROMcheckWHEREcustomer_id=;

UPDATEcheckSETbalance=balance-.00WHEREcustomer_id=;

UPDATEsaveSETbalance=balance+.00WHEREcustomer_id=;

COMMIT;

此为银行对于转账类的交易所必须使用的事务操作场景,而在实际的生产环境中,事务操作的复杂度比这复杂得多。

2.2事务概念和特性

事务是访问及操作数据库各类数据项的操作序列集合,如各类增删改查SQL操作组合。它通常由begintransaction和endtransaction语句来界定。

数据库系统的事务需包含以下特性:

原子性(Atomicity):事务的所有操作在数据库中要么全部执行成功,要么全部执行失败。一致性(Correspondence):事务操作前后,数据的完整性必须保持一致。隔离性(Isolation):多个用户并发访问数据库时,数据库为每个用户开启事务,不能被其他事务的操作数据所干扰。即每个事务都感觉不到系统中有其他事务在并发地执行。持久性(Durability):一个事务成功完成后,它对数据库的改变必须是永久的,即使出现系统故障也不会对事务有影响。事务隔离级别

针对事务隔离,SQL标准定义了4类隔离级别,包括了一些具体规则,用来限定事务内外的哪些改变是可见的,哪些是不可见的。下面介绍四种隔离级:

READUNCOMMITTED(读取未提交内容)在READUNCOMMITTED隔离级别,所有事务都可以“看到”未提交事务的执行结果。读取未提交数据,也被称之为“脏读”。

READCOMMITTED(读取提交内容)大多数数据库系统的默认隔离级是read


转载请注明:http://www.aierlanlan.com/tzrz/3874.html

  • 上一篇文章:
  •   
  • 下一篇文章: