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

来源:互联网 发布:网络模式怎么设置 编辑:程序博客网 时间:2024/06/08 19:28

并发操作可能遇到的问题:
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);
阅读全文
0 0