数据库事务:

数据库事务有四大特性:

原子性:这个特性是保证事物是一个不可分割的单元 要么全部执行 要么全部不执行 如果事务中的某一部分操作出现问题 那么此时的数据应该全部回滚到初始状态 以保证事物的完整性

一致性:一致性是保证事务在开始和结束后的数据库的数据要保持一致 在执行事务之后 数据要跟预想的数据达到符合预定的规则或者期望得到的结果 由此来确保数据的合法性和准确性

隔离性:隔离性确保执行的多个事务不会互相干扰 即一个事务的操作对其他事物来说是独立运行的 这防止了事务并发执行时的数据不一致的情况

持久性:持久性说的是 即一个事务一旦进行提交 那么这个数据将会永久存储在数据库中 无论数据库还是系统发生崩溃 数据也不会丢失

脏读:读未提交 就是指事务a  开启事务    事务b 开启事务   然后事务a进行删除操作 比如说 取款(就相当于删除) 比如说事务a有1000块钱 取出100块钱 然后事务b进行读取数据 此时事务b读取到的数据就是900 然后事务b觉得900不完整想加100凑个整 然后就修改了数据 事务b进行提交 然后此时事务a再次进行查询 那么此时的数据就变成了1100 就会出现脏读 也就是(读未提交)

不可重复读:读已提交 就是指事务a 开启事务  事务b  开启事务 然后事务b查询余额为1000 事务a也去查询余额为1000 然后事务b进行取钱操作 将1000块钱全部取出 然后提交 此时事务a再次查询 那么此时的显示结果就为0 那么跟第一次的查询结果不一致 那么这就是不可重复读

  幻读:幻读就是指事务a 开启事务 事务b开启事务 然后事务b进行添加数据 进行提交 事务a此时进行统计数量 假如说初始统计数量为5 然后事务不是添加一条数据吗 然后提交之后 事务a在进行统计数量 此时读到的统计数量为6 此时事务a的事务并没有提交就读取到了事务b添加后的数据 此时就是幻读

解决幻读的方法:添加行级锁  比如说 select * from test_tab for update 

通过使用select .... for update 添加行级锁。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值