【事务】transaction(一个或多个sql语句的整合)

一 .事务的四大特性

1.原子性:事务是不可分割的一个最小单元

2.一致性:事务要不一起是一起提交成功,要不就是一起失败

3.隔离性:事务里的操作不能被其他事务干扰吗,并发事务之间互不干扰

4.持久性:事务提交后会改变数据库,接下来这个事务发生故障也不会对数据库有影响

二.事务并发时的常见问题

原因:同一时间可能有多个事务并发操作数据库。

出现的三个问题:

1.脏读:A事务读取到了B事务更新但未提交的字段,此时如果B事务回滚了,则A事务读取到的字段数据就是无效的。

2.不可重复读:A事务读取数据库中的一个字段但还未提交,接着B事务更新了这个字段,A事务再读这个数据的时候就不一样了。

3.幻读:A事务读取数据库一个字段(假如这个字段有5个数据),接着B事务更新后给这个字段加了一些数据(比如说加了3条数据),然后A事务再读这个字段时,就会发现多了几行数据。。。。(本质是因为数据库前后数据不一致)

三.四种隔离级别

1.read uncommitted(读未提交):允许事务读其他未提交数据(可能出现脏读,不可重复度,幻读)

2.read committed(读已提交):只允许读其他事务已提交的数据(可防止脏读,可能出现不可重复度,幻读)

3.repeatable read(可重复读): 确保事务可以多次从一个字段中读取相同的值,在这个事务持续期间,禁止其他事务对这个字段进行更新(update)。(可以避免脏读和不可重复读,但幻读仍然存在)

4.serializable(串行化):确保事务可以从一个表中读取相同的行,在这个事务持续期间,禁止其他事务对该表执行插入、更新和删除操作,所有并发问题都可避免,但性能十分低下(因为你不完成就都不可以弄,效率太低)

了解: oracle支持两种事务隔离级别:read committed、serializable。

oracle默认的事务隔离级别是:read committed。

mysql的默认事务隔离级别是:repeatable read。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值