事务一致性理解 事务ACID特性的完全解答
A 原子性
事务管理者多个小操作,他们同时完成或者同时不完成就是原子性
C 一致性
一致性,是一个很相对的,很主观的概念, 一致性 描述的是 事务 从一个一致的状态变成 另一个一致的状态。 一致性需要 AID 的 特性来保证,但是 还和我们的逻辑相关。
一致性是数据库事务的特性,也就是说一个事务应该具有ACID。数据库事务保证AID。但是一致性使我们的代码逻辑和AID一起来保证的。
比如: 张三 有100 块钱,李四 0 元。 这时候数据是一致的(这时候的数据状态是一致的,符合我们主观的约定)。
操作:张三个李四转账 100 。
事务提交以后。 张三:0 元。 李四:100 元,这时候我们认为数据是一致的,钱的总量没变,很主观的意识( )
思考: 如果转账要扣除手续费(扣除2 快手续费)。上面的结果就不是一致状态了。
知识后我们认为具有一致性状态的的结果是.张三0元,李四98元。系统手续分收益加2元。所以一致性性是很主观的概念,又我们代码逻辑保证。
思考2:如果 没有 AID 一致性是否可以成立
没有A,张三减去100,李四没加钱。(一致性被破坏)(我们主观的认为钱总量是100,这里凭空少了了100)
没有I ,张三 减去100 ,想给李四加 98 块钱。但是 独到了别人未提交的数据(读到另一个事务吧李四的钱改成100,然后这个事务还回滚了),
给李四加98 ,这时候李四的钱变成 198 。系统手续费 加2 快。 结果诗句状态有不一致了(我们主观的认为钱总量是100,这里凭空多了100)。
没有D。 正常操作完成 钱都 变成我们想要的记过。提交了,但是下一刻所有提交不见了。回复初始没提交的样子。虽然钱的总量还是一百,但是我们有转账这个操作,我们钱没按照我们设定的情景移动,
如果只看 张三的数据,张三有转账成功记录。但是钱没变(我们的主观意识,张三的余额应该等于张三的初始余额加上转账记录。明显不相等,初始100,转账记录-100,余额应该是0 ,但是 现在余额是100 。不是数据不是我们认知的一致的状态)。
I 隔离性 (事务的不同隔离级别隔离性不同)
两个方面
1 事务 开启以后不会读到 别的事务的修改 ( 不可重复读 )
2 事务不会读到别的事务没有提交的数据。(脏读)
3 事务 开启以后 不会读到别的事务的 插入,和删除 ( 幻读 )
D 持久性
事务提交了,就写到硬盘。不会无故丢失。
事务一致性理解 事务ACID特性的完全解答的更多相关文章
- JDBC之事务隔离级别以及ACID特性
JDBC之事务隔离级别以及ACID特性 事务隔离级别: 1.更新遗失(Lost update) 两个事务都同时更新一行数据,但是第二个事务却中途失败退出,导致对数据的两个修改都失效了.这是因为系统没有 ...
- MySQL事务一致性理解
一致性是指数据处于一种语义上的有意义且正确的状态.一致性是对数据可见性的约束,保证在一个事务中的多次操作的数据中间状态对其他事务不可见的.因为这些中间状态,是一个过渡状态,与事务的开始状态和事务的结束 ...
- 深入理解大数据之——事务及其ACID特性
目录 事务简介 事物的定义 事务的目的 事务的状态 事务的ACID属性 ACID简介 原子性(Atomicity) 一致性(Consistency) 隔离性(Isolation) 持久性(Durabi ...
- 数据库事务ACID特性(原子性、一致性、隔离性、持久性)
ACID特性: 原子性(Atomicity).一致性(Consistency).隔离性(Isolation).持久性(Durability) 原子性:一个事务必须被视为一个不可分割的最小工作单元,整个 ...
- 四:分布式事务一致性协议paxos通俗理解
转载地址:http://www.lxway.com/4618606.htm 维基的简介:Paxos算法是莱斯利·兰伯特(Leslie Lamport,就是 LaTeX 中的"La" ...
- 深入学习MySQL事务:ACID特性的实现原理
事务是MySQL等关系型数据库区别于NoSQL的重要方面,是保证数据一致性的重要手段.本文将首先介绍MySQL事务相关的基础概念,然后介绍事务的ACID特性,并分析其实现原理. MySQL博大精深,文 ...
- 一文说尽MySQL事务及ACID特性的实现原理
MySQL 事务基础概念 事务(Transaction)是访问和更新数据库的程序执行单元:事务中可能包含一个或多个 sql 语句,这些语句要么都执行,要么都不执行.作为一个关系型数据库,MySQL 支 ...
- 带你了解数据库中事务的ACID特性
前言 前面我们介绍过数据库中 带你了解数据库中JOIN的用法 与 带你了解数据库中group by的用法的相关用法.本章节主要来介绍下数据库中一个非常重要的知识点事务,也是我们项目中或面试中经常会遇到 ...
- 探索Redis设计与实现14:Redis事务浅析与ACID特性介绍
本文转自互联网 本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial ...
随机推荐
- JavaScript中纯JS写21点游戏
// 21点游戏 分为人机对战和人人对战 // 玩家每次抽一张牌 牌的点数为1-10点随机数 谁更接近21点谁就获胜 let readline = require("readline-syn ...
- 重写、super关键字、final关键字、多态、子类型转换、抽象的初步了解
重写 含义 在Java中,子类可继承父类中的方法,而不需要重新编写相同的方法.但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写.方法重写又称方法覆盖. 重写与重载的 ...
- 收藏的链接-Android
我的Android进阶之旅------>Android颜色值(#AARRGGBB)透明度百分比和十六进制对应关系以及计算方法 - 欧阳鹏 - CSDN博客 https://blog.csdn.n ...
- Mybatis 动态insert动态插入的坑
在写insert子句的时候,由于不知道需要插入多少字段,mybatis通过prefix,suffix,suffixOverrides很好的解决了该问题,实现了动态insert语句. 用这种动态插入时& ...
- LeetCode 237. 删除链表中的节点(Python3)
题目: 请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点. 现有一个链表 -- head = [4,5,1,9],它可以表示为: 示例 1: 输入: head ...
- Linux 下 Nand Flash 驱动说明
注册 driver_register 通过 module_init(s3c2410_nand_init);注册 Nand Flash 驱动. 在 s3c2410_nand_init ()中通过 dri ...
- thinkone无法重新创建数据库的问题 newsy
错误描述: 无法加载数据库驱动: Think\Db\Driver\ 前后装了OneThink1.0和OneThink1.1都没成功,都是卡在了安装页面的三个step,读者们你们也遇到一样的情况吗 ...
- JavaScript特效源码(7、页面特效二)
7.将站点加入频道栏 将站点加入频道栏[看详细说明] ====1.加入channel的方法:使用如下连接指向你的频道文件*.cdf. <a href="javascript:windo ...
- mysql主从复制linux配置(二进制日志文件)
安装mysql,两台机器一主(192.168.131.153),一从(192.168.131.154) 主机配置 修改主/etc/my.cnf文件 添加 #server_id=153 ###服务器id ...
- [笔记]180612 for DevOps
adb devices 识别不了安卓手机:我下的adb interface驱动下载链接:如果设备管理器中ADB Interface是黄色的,就需要先安装adb interface驱动(BD:adb i ...