标签:mint aci 查看 serial oracl ice comm enc ora
一、概念:一组要么同时执行成功,要么同时执行失败的SQL语句。是数据库操作的一个执行单元。
二、事务的ACID:
1.原子性(Atomicity):所有操作要么全部成功,要么全部失败回滚;
2.一致性(Consistency);只要一个操作失败,所有的更改过的数据都必须回滚到修改前状态;
3.隔离性(Isolation);事务查看数据时数据所处的状态,要么是另一并发事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看中间状态的数据。
4.持久性(Durability);持久性事务完成之后,它对于系统的影响是永久性的。
三、事务的使用:
1.开启事务;start transaction;//开启事务;
2.提交事务;commint;//所有语句执行完毕,没有异常,提交事务,更新到数据库中;
3.回滚事务;rollback;//当遇到突发情况,撤销所有已执行的sql语句;
四、java中操作事务使用Connection类:java.sql包;
1.提交事务:commint();
2.回滚事务:rollback();
3.自动提交:setAutoCommit(boolean);//true:默认,不使用事务;false:使用事务;
//事务的设置不能在dao层,必须在service层进行;
//操作的事务时候需要使用同一个Connection对象;
保存点相关:
1.设置保存点:Savepoint setSavepoint(String name);
2.返回到保存:void rollback(Savepoint name);
3.清除保存点:void releaseSavepoint(Savepoint name);
五、事务隔离级别:
1.分类:
1)read uncommitted;可读未提交;//读取未提交的数据,也被称之为脏读(Dirty Read)
2)read committe;提交后才可读,不可重复读;
3)repeatable read;提交后才可读,可重复读;MySQL默认;
4)serializable;比重复度隔离级别更高;占用大量内存;oracle默认;//可以防止幻读;
2.注意点:
1)脏读:a事务读取到b事务正在操作的数据,但是b操作失败回滚或完成后导致a读取的数据实际是不存在的;
2)重复度和不可重复读的区别:
不可重复读:两次查询读取到不同的值;当一个事务打开,其他事务还可以修改;
重复读:两次查询读取到相同的值;当一个事务打开,其他事务就无法修改;
3)幻读:幻读发生在当两个完全相同的查询执行时,中间插入了一个事务插入操作。
六、查看隔离级别:(1)当前:select @@tx_isolation;(2)全局:select @@global.tx_isolation;
8.0以后:select @@transaction_isolation;(2)全局:select @@global.transaction_isolation;
七、设置隔离级别:
1.全局:set global transaction isolation level read committed;
2.当前会话:set session transaction isolation level read committed;
标签:mint aci 查看 serial oracl ice comm enc ora
原文地址:https://www.cnblogs.com/Tractors/p/11286086.html