• 技术文章 >数据库 >mysql教程

    数据库ACID

    2016-06-07 15:41:31原创790

    数据库ACID 1、ACID是RDBMS的理论基石; A原子(Atomiclty )事务原子性; C一致(Consistency)插入一张表数据,会影响其它(索引/其它表)等一致。 I 隔离性(ioslation)事务独立,封闭;隔离性强度; D持久性(Durabilty)数据永存。 对应分布式数据库,

    数据库ACID

    1、ACID是RDBMS的理论基石;

    A原子(Atomiclty )事务原子性;

    C一致(Consistency)插入一张表数据,会影响其它(索引/其它表)等一致。

    I 隔离性(ioslation)事务独立,封闭;隔离性强度;

    D持久性(Durabilty)数据永存。

    对应分布式数据库,某些业务不需全部一致性事务,可采用弱化其中之一,提供其它响应速度等。

    理解:

    A 事务原子性,指对一个事务要么完全提交要么完全回滚,保证提交成功的给数据库的和外部反应的一致。或者提交不成功,完全回滚,数据库完全没反应于外部。这种事务原子保证了现实生活很多业务现象的合理。例如:银行存款,如果确定成功存入,数据库必须完整修改。如果存入失败,数据库必须完全回滚。不能在数据库只存一半或回滚一半。

    C 事务一致性:一个事务执行前和执行后在数据库必须保证一致状态;例如:表a和表b有主外键约束,更新a,级联b值需要保持一致性更新。

    I 是事务的隔离性 ,事务的隔离有4个级别(?read Uncommitted,read committed ,rapeatable read?,可串行)数据库为了防止出现数据库读取不一致,可设置不同等级的事务的隔离性;

    D、 持久性 :在事务完成以后,数据持久的保存在数据库之中,并不会被回滚。

    BASE模型完全不同ACID模型,牺牲高一致性,获得可用性或可靠性: Basically Available基本可用。支持分区失败(e.g. sharding碎片划分数据库) Soft state软状态 状态可以有一段时间不同步,异步。 Eventually consistent最终一致,最终数据是一致的就可以了,而不是时时一致。

    BASE思想的主要实现有
    1.按功能划分数据库
    2.sharding碎片

    BASE思想主要强调基本的可用性,如果你需要高可用性,也就是纯粹的高性能,那么就要以一致性或容错性为牺牲,BASE思想的方案在性能上还是有潜力可挖的。

    ?强一致性

    强一致性(即时一致性) 假如A先写入了一个值到存储系统,存储系统保证后续A,B,C的读取操作都将返回最新值

    ?弱一致性

    假如A先写入了一个值到存储系统,存储系统不能保证后续A,B,C的读取操作能读取到最新值。此种情况下有一个“不一致性窗口”的概念,它特指从A写入值,到后续操作A,B,C读取到最新值这一段时间。

    ?最终一致性

    最终一致性是弱一致性的一种特例。假如A首先write了一个值到存储系统,存储系统保证如果在A,B,C后续读取之前没有其它写操作更新同样的值的话,最终所有的读取操作都会读取A写入的最新值。此种情况下,如果没有失败发生的话,“不一致性窗口”的大小依赖于以下的几个因素:交互延迟,系统的负载,以及复制技术中replica的个数(这个可以理解为master/salve模式中,salve的个数)。

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:bash一些技巧 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • 深入理解MySQL索引优化器工作原理• MYSQL查询优化之有效加载数据_MySQL• 讲解MySQL服务器安装之后如何调节性能_MySQL• MySQL性能优化全攻略- 相关数据库命令_MySQL• 简单聊聊MySQL中join查询
    1/1

    PHP中文网