数据库隔离级别和并发操作可能导致的问题

并发操作可能遇到的问题:
1.读到脏数据,脏数据就是读到了别的事务没有提交的数据,
举个例子,A在一个转账事务中,转了100块钱给B,此时B读到了这个转账的数据,然后做了一些操作(发货给A,或者其他的),可是这时候A的事务并没有提交,如果A回滚了事务,那就GG了。这就是脏读了。

2.不可重读读,在一个事务中两次进行读取同一数据,读到的内容不一致(主要是读到了别的事务更改的数据),这个应用场景不多。

3.幻读(虚读),在一个事务中,两次进行读操作,读到的内容不一致(主要是读到了别的事务新增的记录),应用场景不多。

数据库隔离级别:
1.串行化。(对同一条数据的读写是被事务锁定的,每次只能这个事务结束后才能进行下个事务的读写,可能会导致数据库的死锁,而且速度很慢,不推荐)
2.读已提交的数据(读别的事务提交的数据)
3.可重复读(在一个事务中,两次读取到的数据一致)

mysql 查询事务的隔离级别

select @@tx_isolation

也可以在mysql的配置文件中进行配置

#mysql事务隔离级别,读已提交的数据,防止脏读(读取别的事务未提交的数据)
transaction_isolation = READ-COMMITTED
#并发过程中,可重复读,防止脏读和不可重复读(两次读取一致性,在自己的事务过程中,不会读到别的事务提交的事务)
#transaction_isolation = Repeatable-Read

jdbc中查看和修改数据库隔离级别

//查看事务的隔离级别         System.out.println(conn.getTransactionIsolation());;
//设置事务的隔离级别            conn.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值