关系型数据库数据库[数据库原理] 关系型数据库的事务ACID特性

时间紧张,先记一笔,后续优化与完善。

    事务是关系型数据库的核心,关系型数据库之所以在从前这几十年里蓬勃发展,和它对事务的支持密不可分。但所谓成也萧何,败也萧何,随着数据量的爆炸式增长,特别是近几年的大数据的蓬勃发展,关系型数据库的事务成为了互联网应用的性能瓶颈,NoSQL恰是摒弃了关系型数据库事务的某些属性,使得对于某类特别应用,其性能是关系型数据库的好多倍。

    下面先说说什么是事务吧,事务在英文中是transaction,和现实天下中的交易很相似,它有如下四个特性:

    

    1、A (Atomicity) 原子性

    原子性很容易懂得,也就是说事务里的所有操作要么全体做完,要么都不做,事务成功的条件是事务里的所有操作都成功,只要有一个操作失败,整个事务就失败,需要回滚。

    比如银行转账,从A账户转100元至B账户,分为两个步骤:1)从A账户取100元;2)存入100元至B账户。这两步要么一同实现,要么一同不实现,如果只实现第一步,第二步失败,钱会稀里糊涂少了100元。

    

    2、C (Consistency) 分歧性

    分歧性也比较容易懂得,也就是说数据库要一直处于分歧的状态,事务的运行不会转变数据库本来的分歧性约束。

    例如现有完整性约束a+b=10,如果一个事务转变了a,那么必须得转变b,使得事务结束后依然满意a+b=10,否则事务失败。

    

    3、I (Isolation) 独立性

    所谓的独立性是指并发的事务之间不会互相影响,如果一个事务要访问的数据正在被另外一个事务修改,只要另外一个事务未提交,它所访问的数据就不受未提交事务的影响。

    比如现有有个交易是从A账户转100元至B账户,在这个交易还未实现的情况下,如果此时B查询自己的账户,是看不到新增加的100元的。

    

    每日一道理
灯,带有一种明亮的光,每当深夜来临,是它陪伴着你,如此默默无闻。它是平凡的,外表华丽与否,那都是一样的,珍珠点缀,水晶加饰的灯它只能用以装饰,来满意人们的虚荣心,比起这,普普通通的日光灯是幸运的,因为它照明的本性没有转变,如同生活中的一部分人平平凡凡却实实在在。

    4、D (Durability) 持久性

    持久性是指一旦事务提交后,它所做的修改将会永久的保存在数据库上,即使出现宕机也不会丧失。

    还是举下面那个例子,如果转账成功了,而此时数据库宕机了,重启后,还是可以看到转账成功后的结果。

    

    下面介绍一个牛人 —— James Gray,他对关系型数据库事务做了不可磨灭的功绩:

    

  •  定义了事务,完美解决了数据分歧性的问题。
  • 提出了锁的机制,
  •  提出日记对事物的控制。
  •  提出了两阶段提交的技巧(2PC)。

    

向牛人膜拜~~~

    

关系型数据库和数据库

文章结束给大家分享下程序员的一些笑话语录: 人脑与电脑的相同点和不同点,人脑会记忆数字,电脑也会记忆数字;人脑会记忆程序,电脑也会记忆程序,但是人脑具有感知能力,这种能力电脑无法模仿,人的记忆会影响到人做任何事情,但是电脑只有程序软件。比尔还表示,人脑与电脑之间最重要的一个差别就是潜意识。对于人脑存储记忆的特别之处,比尔表示,人脑并不大,但是人脑重要的功能是联络,人脑会把同样的记忆存储在不同的地方,因此记忆读取的速度就不相同,而这种速度取决于使用的频率和知识的重要性。人脑的记忆存储能力会随着年龄增长而退化,同时记忆的质量也会随着年龄退化。经典语录网

--------------------------------- 原创文章 By
关系型数据库和数据库
---------------------------------

原文地址:https://www.cnblogs.com/jiangu66/p/3102284.html