数据库事务 ACID
事务:一个操作,一个要执行SQL语句,要么执行,要么不执行,是一个不可分割的工作单位。
有如下特性:
A:原子性(atomicity)
C:一致性(consistency)
I:隔离性(isolation)
D:持久性(durability)
先理解数据库的一致性
参考这篇博客
https://www.cnblogs.com/ivanpan/p/6653990.html
考虑如下场景:
公司给员工发工资
1、财务处确认给你发的工资是多少
2、确认公司账户有多少资金
3、像银行发起转账申请,银行扣除学校财务卡上的指定金额
4、银行向员工工资卡中打入指定金额
5、银行汇报双方交易完成
如果执行第3步的时候,突然大断电,整个电力系统进入瘫痪。待电力系统恢复之后,银行并不会执行4,5,甚至连1,2,3的操作记录都对视。此时出现如下问题
1、学校认为,工资已经发出
2、A老师认为,学校还没有发工资
3、银行认为,从来就没有发生过转账的事情
其实整个过程可以用一个词来描述:数据库中的数据产生了“不一致性”,即在转钱的前后要保证钱的总量要一致。
还有要保证数据库的内部数据结构(如 B 树索引或双向链表)都必须是正确的
原子性:因为要满足要么执行,要么不执行,所以事务要么执行,要么不执行,是不可再分割的工作单元。
隔离性:多个事务并发访问时,事务之间是隔离的。
具体的有几种事务隔离级别,请看数据库复习之事务隔离级别
有的隔离并发事务所做的修改要和其他并发事务隔离。这是最基本的,如果这都不能保证,银行存钱就不准了。
一个事务修改数据,另一个事务查看数据时只能查看到修改前的数据或者修改后的数据,不能看到中间状态的数据。不然就会读到脏数据。
完全的隔离就要求串行化,这样会严重影响性能。
持久性:事务一旦提交,对数据库中数据的改变是永久性的。
数据库事务 ACID相关推荐
- 数据库事务ACID原则学习分享
本人结合自己对技术的理解,努力以通俗易懂的内容帮助大家了解技术的基本原理,内容仅供参考,不对或不完善的地方请大家指教,感谢关注! 一.事务概念的引入 当今,信息化技术非常发达的时代,我们通过手机上的银 ...
- [转]数据库事务ACID特性
ACID特性 数据库管理系统中事务(transaction)的四个特性(分析时根据首字母缩写依次解释):原子性(Atomicity).一致性(Consistency).隔离性(Isolation).持 ...
- 数据库事务ACID详解(转载)
转载自:http://blog.csdn.net/shuaihj/article/details/14163713 谈谈数据库的ACID 一.事务 定义:所谓事务,它是一个操作序列,这些操作要么都执行 ...
- 数据库事务ACID特性
ACID特性 数据库管理系统中事务(transaction)的四个特性(分析时根据首字母缩写依次解释):原子性(Atomicity).一致性(Consistency).隔离性(Isolation).持 ...
- 数据库事务ACID特性分析
在日常生活中,事务是无时无刻不存在的,什么是事务,按我的理解事务便是执行一段连续的不可分离的操作,这段操作是为了实现某一个目的而执行的,它不存在中间状态,要么执行成功,则该操作所带来的影响永久存在,要 ...
- 数据库事务ACID原则
数据库事务正确执行的四个原则:A原子性.C一致性.I独立性.D持久性 (1)原子性:整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节.事务在执行过程中发生错误,会被回滚到事 ...
- 数据库事务的ACID特性及含义
数据库事务的ACID特性及含义 1.原子性(Atomic) 一个事务被视为一个不可分割的最小工作单元,这个事务里的所有操作要么全部成功执行,要么全都不执行,不能只执行其中的一部分操作.实现事务的原子性 ...
- 数据库 事务的特性ACID
事务(Transaction)是并发控制的基本单位. 所谓事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位.例如,银行转帐工作:从一个帐号扣款并使另一个帐号增款,这 ...
- 数据库事务的四大特性ACID
本篇讲诉数据库中事务的四大特性(ACID),并且将会详细地说明事务的隔离级别. 如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性: ⑴ 原子性(Atomicity) 原子性是指事务 ...
最新文章
- 【转】Linux awk命令详解
- 软路试--就像一棵树活着
- 算法分析与设计——分治法最近点对
- http://blog.csdn.net/wemedia/details.html?id=40237
- oracle 查看日志组切换状态_Oracle 11g ADG 快照备库切换步骤
- win怎么打开微软更新服务器,怎样打开win10的更新服务器地址
- when is extension component's resource bundle loaded
- php如果实现日历的制作,教大家制作简单的php日历
- S5PV210裸机之Nandflash
- 传统新年元旦海报设计,必备高品质吉祥图案背景
- java做flv直播服务器,EasyDSS流媒体服务器软件(支持RTMP/HLS/HTTP-FLV/视频点播/视频直播)-正式环境安装部署攻略...
- 程序员被纳入新生代农民工;“腾讯视频崩了”上热搜;英特尔发布全新独立显卡品牌 Arc|极客头条...
- jQuery各种选择器总结
- Nginx详解(正向代理、反向代理、负载均衡原理)
- cloudera安装
- 123457123457#0#-----com.yuming.drawGame01--前拼后广--儿童画画游戏
- react 控制台 Maximum call stack size exceeded 如何解决
- c语言aps审核,APS考官最讨厌的几类人
- 前端开发入门教程-CSS(一)
- 淘宝品牌产品无授权开直通车怎么实现