数据库事务的四大特性(ACID)
数据库事务的四⼤特性(ACID)
ACID,指数据库事务正确执⾏的四个基本要素的缩写。包含:原⼦性(Atomicity)、⼀致性(Consistency)、隔离性(Isolation)、持久性(Durability)。⼀个⽀持事务(Transaction)的数据库,必需要具有这四种特性,否则在事务过程(Transaction processing)当中⽆法保证数据的正确性,交易过程极可能达不到交易⽅的要求。
⑴原⼦性(Atomicity)
第⼀个原⼦性,这个是最简单的。说的是⼀个事物内所有操作共同组成⼀个原⼦包,要么全部成功,要么全部失败。这是最基本的特性,保证了因为⼀些其他因素导致数据库异常,或者宕机。
⑵⼀致性(Consistency)
第⼆⼀致性,这个是⼤家误解最深的,很多博客都喜欢⽤银⾏转账的例⼦来讲⼀直性,所谓的⼀致性是基于原⼦性。
原⼦性只保证了⼀个事物内的所有操作同⼀性,⼤家同⽣死,不会出现你死了,我还活着。但是,原⼦性并没有保证⼤家同⼀时刻⼀起⽣,⼀起死。计算机指令是有先后顺序的,这样就决定了⼀个事物的提交,会经历⼀个时间过程,那么如果事物提交进⾏到了⼀半,我读取了数据库,会不会读到中间结果?
为了防⽌这样的情况,数据库事物的⼀致性就规定了事物提交前后,永远只可能存在事物提交前的状态和事物提交后的状态,从⼀个⼀致性的状态到另⼀个⼀致性状态,⽽不可能出现中间的过程态。也就是说事物的执⾏结果是量⼦化状态,⽽不是线性状态。
数据库提交事物会有⼀个过程,如果提交的时候,存在⼀个时间差,在提交的第⼀秒,⼀个删除过程还没完成到了第三秒才完成,会不会第⼀秒访问的⼈和第三秒访问的⼈得到不同的结果?出现不⼀致,状态的混沌?这就是⼀致性得保证的只会有前状态和后状态,绝不会出现中间态。
⑶隔离性(Isolation)四大银行是哪四个
事物的隔离性,基于原⼦性和⼀致性,因为事物是原⼦化,量⼦化的,所以,事物可以有多个原⼦包的形式并发执⾏,但是,每个事物互不⼲扰。
但是,由于多个事物可能操作同⼀个资源,不同的事物为了保证隔离性,会有很多锁⽅案,当然这是数据库的实现,他们怎么实现的,我们不必深究。
⑷持久性(Durability)
持久性,当⼀个事物提交之后,数据库状态永远的发⽣了改变,这个事物只要提交了,哪怕提交后宕机,他也确确实实的提交了,不会出现因为
刚刚宕机了⽽让提交不⽣效,是要事物提交,他就像洗不掉的纹⾝,永远的固化了,除⾮你毁了硬盘。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。