– 事务的隔绝级别

赃读:指一个作业读取了另三个业务未提交的数码。

不行重复读:在三个作行业内部读取表中的某生机勃勃行数据,数次读取结果不一样。三个业务读取到了另三个事务提交后的数码。(update)

虚读(幻读):是指在二个业务内读取到了别的事情插入的数目,招致前后读取不雷同。
(insert卡塔尔(قطر‎

 

数据库通过设置专门的学业的隔离品级防护上述情形的发出:

* 1、READ UNCOMMITTED: 赃读、不可重复读、虚读都有十分大可能率产生。

* 2、READ COMMITTED: 幸免赃读。不可重复读、虚读都有希望发生。(oracle暗中同意的)

* 4、REPEATABLE READ:防止赃读、不可重复读。虚读有希望发生。(mysql暗许)

* 8、SEOdysseyIALIZABLE: 制止赃读、不可重复读、虚读。

品级越高,质量越低,数据越安全

 

mysql中:

翻开当前的工作隔绝品级:SELECT
@@TX_ISOLATION;

转移当前的事务隔开等第:SET
TRANSACTION ISOLATION LEVEL 八个等级之意气风发。

安装隔开等第必得在作业从前。

 

事情指逻辑上的生机勃勃组操作,组成那组操作的生龙活虎少年老成单元,要么全成功,要么全不成功。

– 事务的特征

原子性:指事务是叁个不可分割的干活单位,事务中的操作照旧都发生,要么都不发生。 

生机勃勃致性:事务必得使数据库从二个后生可畏致性状态调换成别的一个生龙活虎致性状态。转账前和转化后的总金额不改变。

隔绝性:事务的隔开分离性是多个客户并发访谈数据库时,数据库为每三个客户张开的事务,无法被别的作业的操作数据所忧愁,两个冒出事务之间要互相隔绝。

持久性:指叁个业务后生可畏旦被交给,它对数据库中数据的改变正是恒久性的,接下去就是数据库发生故障也不该对其有此外影响。

– JDBC调整作业

Connection conn=null;
PreparedStatement ps=null;
try{
  conn=DBUtil.getConnection();
  conn.setAutoCommit(false);//相当于begin
  ps=conn.prepareStatement("update account set money=money-100 where id=1");
  ps.executeUpdate();
  int i=1/0;//测试如果中途出现异常,第一条sql会不会执行
  ps=conn.prepareStatement("update account set money=money+100 where id=2");
  ps.executeUpdate();
  conn.commit();
}catch(Exception e){
  if(conn!=null){
    conn.rollback();
  }
}

– MySQL中的事务

a,mysql引擎是永葆专业的

b,mysql私下认可自动提交业务。每条语句都处在单独的事务中。

c,手动调节专门的工作

  开启事务:begin;

  提交业务:commit;

  回滚事务:rollback;