ACID事务四大特性
什么是事务?
事务(Transaction)是并发控制单位,是用户定义的一个操作序列,这些操作要么都做,要么都不做,是一个不可分割的工作单位。
事务通常以BEGIN TRANSACTION开始,以COMMIT或ROLLBACK结束。
事务通常以BEGIN TRANSACTION开始,以COMMIT或ROLLBACK结束。
ACID,分别代表原子性(Atomicity),一致性(Consostency),隔离性(Isolation)与持久性(Durability)是事务提供的安全保证
原子性
原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。
一致性
数据库总是从一个一致性的状态转移到另一个一致性的状态。一致性确保了即使在执行第三、第四条语句之间时系统崩溃,前面执行的第一、第二条语句也不会生效,因为事务最终没有提交,所有事务中所作的修改也不会保存到数据库中。
隔离性
一个事务的执行不能其它事务干扰。即一个事务内部的操作及使用的数据对其它并发事务是隔离的,并发执行的各个事务之间不能互相干扰。
持续性
指一个事务一旦提交,它对数据库中的数据的改变就应该是永久性的。接下来的其它操作或故障不应该对其执行结果有任何影响。
事务中的所有操作要么全部执行,要么都不执行; 如果事务没有原子性的保证,那么在发生系统 故障的情况下,数据库就有可能处于不一致状态。 因而,事务的原子性与一致性是密切相关的。
BASE理论
是基本可用(BasicallyAvailable)、软状态)Soft state)最终一致性(Eventually consistent)缩写
基本可用BasicallyAvailable
系统某些节点出现了不可预知的故障,系统整体上还是可用的。
只是相对于正常系统而言,响应时间上有所损失,或者某些功能不可用
软状态SoftState
不要求系统的强一致性,允许系统中的数据存在中间状态
并认为该中间状态,不会对系统整体造成负面影响
最终一致性EventuallyConsistent
系统处于软状态,经过有限的时间期限后,数据最终能达到一致
最终一致性由以下几部分组成,不一定都能满足
因果一致性
A节点更新完数据后,同步给B节点\n那么后续对节点B中数据的访问和修改,都给予A更新后的值
读己之所写
更新节点A后,通过节点A一定能读到在节点A上更新的最新值
会话一致性
在同一个会话中,客户端一定能读到自己更新的最新值
单调写一致性
对同一一个节点的写操作,按顺序执行\n单调读一致性
客户端从系统中读到某个数据后,在后续访问中,系统不应返回更旧的值