mysql事务管理

数据库

事务指逻辑上的1组操作,组成那组操作的逐条单元,要么全成功,要么全不成事。

MySQL事务,mysql事务管理

政工指逻辑上的1组操作,组成那组操作的各种单元,要么全成功,要么全不成事。

– MySQL中的事务

a,mysql引擎是永葆工作的

b,mysql暗中认可自动提交业务。每条语句都地处单独的事情中。

c,手动调控作业

  开启事务:begin;

  提交业务:commit;

  回滚事务:rollback;

– MySQL中的事务

a,mysql引擎是永葆职业的

b,mysql暗中认可自动提交业务。每条语句都地处单独的事体中。

c,手动调整专门的职业

  开启事务:begin;

  提交业务:commit;

  回滚事务:rollback;

– 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();
  }
}

– 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();
  }
}

– 事务的风味

原子性:指事务是一个不可分割的劳作单位,事务中的操作依然都发出,要么都不发出。 

一致性:事务必须使数据库从一个一致性状态转换来其余多少个壹致性状态。转账前和中间转播后的总金额不改变。

隔开分离性:事务的隔断性是三个用户并发访问数据库时,数据库为每二个用户张开的政工,不可能被别的交事务情的操作数据所干扰,八个冒出事务之间要相互隔绝。

持久性:指三个政工一旦被交给,它对数据库中数量的改变正是长久性的,接下去便是数据库产生故障也不该对其有任何影响。

– 事务的特色

原子性:指事务是三个不可分割的做事单位,事务中的操作照旧都发出,要么都不发出。 

一致性:事务必须使数据库从二个壹致性状态转换成此外二个一致性状态。转账前和转账后的总金额不改变。

隔绝性:事务的隔断性是八个用户并发访问数据库时,数据库为每多个用户张开的事情,不能够被其它作业的操作数据所困扰,七个冒出事务之间要相互隔绝。

持久性:指三个职业一旦被交付,它对数据库中多少的变动正是永远性的,接下去就是数据库产生故障也不该对其有其它影响。

– 事务的割裂等级

赃读:指一个业务读取了另贰个事务未提交的多少。

不行重复读:在3个作行业内部读取表中的某壹行数据,数十次读取结果不一致。五个业务读取到了另1个事务提交后的数额。(update)

虚读(幻读):是指在二个作行业内部读取到了其余事情插入的数目,导致前后读取不均等。
(insert)

 

数据库通过设置职业的割裂品级防护上述情况的爆发:

* 一、READ UNCOMMITTED: 赃读、不可重复读、虚读都有极大希望产生。

* 二、READ COMMITTED: 制止赃读。不可重复读、虚读都有十分大或许爆发。(oracle暗中认可的)

* 四、REPEATABLE READ:幸免赃读、不可重复读。虚读有比十分大希望产生。(mysql默许)

* 八、SE昂科雷IALIZABLE: 幸免赃读、不可重复读、虚读。

等第越高,品质越低,数据越安全

 

mysql中:

查看当前的事情隔开品级:SELECT
@@TX_ISOLATION;

改造当前的职业隔开分离等级:SET
TRANSACTION ISOLATION LEVEL 五个等级之一。

安装隔断等第必须在职业以前。

 

– 事务的隔开分离等级

赃读:指二个作业读取了另3个作业未提交的数码。

不得重复读:在一个政工内读取表中的某1行数据,数次读取结果不相同。一个作业读取到了另叁个作业提交后的数目。(update)

虚读(幻读):是指在二个事行业内部读取到了其余事情插入的数据,导致前后读取分化等。
(insert)

 

数据库通过安装专门的学业的隔开等第防护上述意况的发出:

* 一、READ UNCOMMITTED: 赃读、不可重复读、虚读都有希望发生。

* 二、READ COMMITTED:
幸免赃读。不可重复读、虚读都有希望爆发。(oracle私下认可的)

* 肆、REPEATABLE
READ:幸免赃读、不可重复读。虚读有相当大可能率爆发。(mysql暗中同意)

* 八、SEEnclaveIALIZABLE: 制止赃读、不可重复读、虚读。

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

 

mysql中:

查阅当前的作业隔开分离品级:SELECT @@TX_ISOLATION;

变动当前的事情隔断等级:SET TRANSACTION ISOLATION LEVEL 八个等级之1。

安装隔断品级必须在事情从前。

 

事务指逻辑上的壹组操作,组成那组操作的逐条单元,要么全成功,要么全不成功。
MySQL中的事务 a,mysql引擎是支…

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图