Transaction

Transaction事务类似一种集合,代表着一系列的数据库操作,其结果会使数据库变为一个整体,因此不可分割。

事务状态:活跃状态、部分提交状态、失败状态、中止状态、提交状态

事务的四大特性(ACID):

原子性(Atomicity):事务要么全部执行,要么全部失败;不会存在一个事务的部分内容完成的现象。

一致性(consistency):事务的起始和结束,数据应当是不变的。

隔离性(Isolation):一个事务的执行不受外界其他事务

持久性(Duration):一个事务提交之后,对数据库的改变是永久的。

ACID特性是由relational database来实现的,其中DBMS采用日志log来保证原子性、一致性、持久性。log记录了事务对数据库所做的更新,如果运行过程中产生错误可以根据log撤销已经做的更新,rollback到开始之前的状态。

DBMS使用锁lock机制来实现隔离性,在并发场景下,只有获得锁的事务才可以更新该数据,其他事务要等待到获得锁才可以更新。

四种事务相互影响:

脏读:事务A读到了事务B未提交的数据。

不可重复读:一个事务范围内,两次查询返回了不同的数据,原因是在两次查询的间隔,其他事务对数据进行了修改。

幻读:事务A正在向表中插入数据,而事务B对表中全部数据行进行了修改。这时事务A会发现还有未修改的数据。

丢失更新:

两个事务同时对一条数据做修改,导致B的修改覆盖了A。

事务的隔离级别:

读取未提交:最低级别隔离,会产生各种事务问题

读取已提交:事务提交后,结果才可以被其他事务看见,可以解决脏读问题。

可重复读:同一个事务中,对同一份数据的读取结果总是相同的,无论是否其他事务对其进行操作,可以避免不可重复读和丢失更新

可串行化:事务串行化,隔离级别最高,完全服从ACID,牺牲了系统的并发性,所有事务依次执行,解决了并发事务的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值