事务说明

概念: 指单个逻辑工作单元执行的一系列操作,要么全部成功,要么全部失败.

(ACID)四大特性:

 1)A(原子性):数据库开启事务与提交事务之间的一系列操作,要么全部执行成功,要么有一条数据执行失败即全部执行失败并进行回滚。

2)C(一致性):数据库开启事务前,与提交事务后数据库中的数据在逻辑上是一致的,不变的。(比如A有100,B有100,转账前总和200,A给B转账50后,A有50,B有150,总和还是200,即满足一致性。)

3)I(隔离性):在并发操作中,不同的事务操作之间必须处于相互隔离的状态,以保证并发操作中数据的正确性;并且数据所处的状态要么是事务开启之前的状态,要么是事务提交之后的状态。

4)D(持久性):事务一单提交后,提交的数据必须持久化到数据库中,以保证可以恢复数据。

在并发情况下:

       如果数据库没有采取数据隔离级别,会产生:

1)脏读:一个事务读取到了另一个事务的未提交更新的数据.

2)不可重复读:一个事务读取两次同一个数据,读到不同的结果,即另一个事物对数据进行了修改操作(主要针对修改操作).

3)幻读(虚读):一个事务对同一张表查询两次,得到不同的结果,即另一个事物对数据进行了插入或删除操作(主要针对插入或删除操作).

为解决上述问题,可设置数据库的隔离级别.

set tx_isolation='隔离级别';

1)READ UNCOMMITTED(读未提交数据)

安全级别最低, 可能出现任何事务并发问题(比如脏读、不可以重复读、幻读等)

性能最好(不使用!!)

2)READ COMMITTED(读已提交数据)(Oracle默认)

防止脏读,没有处理不可重复读,也没有处理幻读;

性能比REPEATABLE READ好  pereatable

3)REPEATABLE READ(可重复读)(MySQL默认)

防止脏读不可重复读,不能处理幻读问题;

性能比SERIALIZABLE好

4)SERIALIZABLE(串行化)

不会出现任何并发问题,因为它是对同一数据的访问是串行的,非并发访问的;

性能最差;

如何查看隔离级别:

 命令:    select @@tx_isolation; 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值