MySQl的事务处理机制

一. 什么是事务?

1.事务的定义

事务(Transaction)就是用户定义的一系列数据库操作,这些操作可以视为一个完成的逻辑处理工作单元,要么全部执行,要么全部不执行,是不可分割的工作单元。

二.事务的使用

(a)begin transaction表示事务的开启标记。

(b)commit表示事务的提交操作,表示该事务的结束,此时将事务中处理的数据刷到磁盘中(物理数据库磁盘中去)。

(c)rollback表示事务的回滚操作,表示事务异常结束,此时将事务中已经执行的操撤销回原来的状态。

三.事务产生的过程:

DBMS系统必须对这种并发操作提供一种相应的处理机制来保证,访问彼此之间不受任何干扰,从而保证数据库的正确性不受到破坏,为了避免数据库的不一致性,这种处理机制称之为“并发控制”,其中事务就是为了保证数据的一致性而产生的一种概念和手段(事务不是唯一手段)

四.事务的特征:

为了保证数据库的正确性与一致性事物具有四个特征

1、原子性(Atomicity)

事务的原子性保证事务中包含的一组更新操作是原子的,不可分割的,不可分割是事务最小的工作单位,所包含的操作被视为一个整体,执行过程中遵循“要么全部执行,要不都不执行”,不存在一半执行,一半未执行的情况。

2、一致性(Consistency)

事务的一致性要求事务必须满足数据库的完整性约束,且事务执行完毕后会将数据库由一个一致性的状态变为另一个一致性的状态。事务的一致性与原子性是密不可分的。

3、隔离性(lsolation)

事务的隔离性要求事务之间是彼此独立的,隔离的。及一个事务的执行不可以被其他事务干扰。具体到操作是指一个事务的操作必须在一个事务commit之后才可以进行操作。多事务并发执行时,相当于将并发事务变成串行事务,顺序执行,如同串行调度般的执行事务。

4、持续性(Durability)

事物的持续性也称持久性,是指一个事务一旦提交,它对数据库的改变将是永久性的,因为数据刷进了物理磁盘了,其他操作将不会对它产生任何影响。

五.并发事务产生的问题

脏读:—个事务读到其他事务未提交的数据。

不可重复读:多次读取相同的数据,得到的结果集不一致,即读到其他事务提交后的数据。

幻读:相同的查询条件,多次读取的结果不一致,即读到其他事务提交后的数据。

不可重复读与幻读的区别是:不可重复读是读到了其他事务执行update、delete后的数据,而幻读是读到其他事务执行insert后的数据。

六.事务的隔离级别

(1)Read UnCommitted(读未提交)∶读到其他事务未提交的数据,会出现脏读、不可重复读、幻读。

(2)Read Committed(读已提交)∶读到其他事务已提交的数据,解决了脏读,会出现不可重复读、幻读。

(3)Repeatable Read(可重复读):相同的数据,多次读取到的结果集一致。解决了不可重复读,还是会出现幻读。

(4)Serializable(串行化):所有事务串行执行,解决了幻读。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值