标签:事务 ABC 账户 事物 一致性 100 数据库 分布式
事务处理的四个至关重要的特性
原子性 (Acomicity)
事物要么完全成功并提交,要么根本不执行。
示例:A转账给B 100元,最后要么A账号少了100元、B账号增加了100元,要么转账失败,A和B账户都没有变化。而不应该出现A账户减少了100元,但B账户没有变化;或者A账户没有变化,但B账户增加了100元的情况。
一致性 (Consistency)
熟悉数据库的朋友都知道,数据库的一致性包括:
- 所有的主键值都是唯一的;
- 数据库具有引用完整性,即记录只记录存在的对象;
- 某些数据只能处于特定的范围(比如年龄小于150)
这里的事务一致性表示:对数据库单独执行事务的时候,如果数据库之前是一致的,执行完了之后也应该是一致的。
这里需要强调的是:和原子性、隔离性和持久性不通,一致性需要由事务程序和执行这些事务程序的TP系统共同负责。
隔离性(Isolation)
如果一个系统运行一个事务集的效果与系统一次运行其中的一个事务的效果相同,那么就说这个事务集是可隔离(可串行的serializable)。
举例:两个事物A、B同时从一个银行账户取最后100元,如果能保证A、B一起执行的效果核A先B后或A后B先的效果一样,就说这类事物是可串行的。
持久性(Durability)
持久性是指当事物执行完毕,所有的更新都存储在稳定的存储器上,不受电源故障或操作系统对影响。之所以需要这样,是因为每个事物都会向用户提供服务,相当于用户核提供服务的企业直接的合同。
举例:A向B转账100元完成之后,A的账户会少100元,B的账户多100元,这个信息需要持久化到非易失性存储器上,以保证不会随着系统重启、异常掉电而丢失记录。
两阶段提交
标签:事务,ABC,账户,事物,一致性,100,数据库,分布式 来源: https://blog.51cto.com/xiamachao/2464434
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。