Transaction

来源:互联网 发布:java高级架构师实战 编辑:程序博客网 时间:2024/05/17 22:28

事务的概念事务指逻辑上的一组操作,组成这组操作的各个单元,要么全部成功,要么全部不成功。事务的特性A:原子性(Atomicity):说明事务是一个不可分割的单位。C:一致性(Consistency):事务必须使数据库从一个一致性状态变换到另外一个一致性状态.(比如转账)*I:隔离性(Isolation):一个事务不能被其他事务打扰。D:持久性(Durability):事务一旦提交,就应该被永久保存起来。事务的隔离级别:未提交读(READ UNCOMMITTED):脏读、不可重复读、虚读都有可能发生。(隔离级别最低,并发性能高) 提交读/不可重复读(READ COMMITTED):能避免脏读,不可重复读、虚读都有可能发生。 (锁定正在读取的行 ,Oracle默认的隔离级别)可重复读(REPEATABLE READ):能避免脏读、不可重复度,虚读都有可能发生。(锁定所读取的所有行 ,MySQL默认的隔离级别)可串行化(SERIALIZABLE):能避免脏读、不可重复度、虚读。(锁表)多个线程开启各自事务操作数据库中数据时,数据库系统要负责隔离操作,以保证各个线程在获取数据时的准确性。如果不考虑事务的隔离级别,会出现以下“不正确”的情况:脏读:指一个事务读到了另一个事务中未提交的数据。不可重复读:在一个事务内读取表中的某一行数据,多次读取的结果不同。重点是修改注:不可重复读和脏读的区别是:脏读是读取了另一个事务中未提交的脏数据,不可重复读是读取了另一个事务已提交了的数据。虚读(幻读):在一个事务内读取到了另一个事务插入的数据,导致前后读取的记录数不一致。重点在于新增或者删除JDBC中设置事务的隔离级别Connection.setTransactionIsolation(int level); // Level:Connection中的常量// 在开启事务前先设置隔离级别Conn.setTransactionIsolation(Connection.*);Conn.setAutoCommit(false);MySQL中控制事务隔离级别的语句:查看当前事务的隔离级别:select @@tx_isolation;设置当前事务隔离级别:set transaction isolation level 隔离级别;


0 0
原创粉丝点击