码迷,mamicode.com
首页 > 数据库 > 详细

MySQL事务

时间:2019-08-02 00:14:02      阅读:145      评论:0      收藏:0      [点我收藏+]

标签: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)

    2read committe提交后才可读,不可重复读;

    3repeatable 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;

 

 

MySQL事务

标签:mint   aci   查看   serial   oracl   ice   comm   enc   ora   

原文地址:https://www.cnblogs.com/Tractors/p/11286086.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!