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

MySql事务及隔离级别

时间:2014-11-14 22:22:23      阅读:212      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   io   color   使用   sp   数据   div   

在数据库中,所谓事务是指作为单个逻辑工作单元执行的一系列操作。

 

事务的操作:
  先定义开始一个事务,然后对数据作修改操作,
    这时如果提交(COMMIT),这些修改就永久地保存下来
    如果回退(ROLLBACK),数据库管理系统将放弃您所作的所有修改而回到开始事务时的状态。
 
在JDBC中,事务默认是自动提交的,每次执行一个 SQL 语句时,如果执行成功,就会向数据库自动提交,而不能回滚
 
为了让多个 SQL 语句作为一个事务执行:
  •调用 Connection 对象的 setAutoCommit(false); 以取消自动提交事务
  •在所有的 SQL 语句都成功执行后,调用 commit(); 方法提交事务
  •在出现异常时,调用 rollback(); 方法回滚事务
 

命令行实现事务处理

  1  查看提交模式
    select @@autocommit
  2、用begin,rollback,commit来实现     
    begin              //开始一个事务            
    rollback          //事务回滚           
    commit          //提交事务
  3、 直接用set来改变mysql的自动提交模式

        MYSQL默认是自动提交的,也就是你提交一个QUERY,它就直接执行
    set autocommit =0     禁止自动提交
    set autocommit =1    开启自动提交,   来实现事务的处理。
      *  当你用 set autocommit =0 的时候,你以后所有的SQL都将做为事务处理,直到你用commit确认或rollback结束。

         *   注意:当你结束这个事务的同时也开启了个新的事务

 

事务隔离级别(transaction isolation levels):隔离级别就是对事务并发控制的四个等级。分为

    1  串行化(SERIALIZABLE)

    2  可重复读(REPEATABLE READ)

    3  读已提交(READ COMMITED)

    4  读未提交(READ UNCOMMITED)   

bubuko.com,布布扣

 

 

1、mysql默认的隔离级别为Repeatable_Read

2、sqlserver 默认的隔离级别为Read Commited

3、oracle数据库支持READ COMMITTED和SERIALIZABLE两种事务隔离性级别,不支持READ UNCOMMITTED和REPEATABLE READ这两种隔离性级别,Oracle数据库默认使用的事务隔离性级别却是READ COMMITTED.

 

设置当前mysql.exe的隔离级别
隔离级需要使用SET 命令来设定其语法如下:
SET  TRANSACTION  ISOLATION    LEVEL   隔离级别

     隔离级别  分为四种:
 READ UNCOMMITTED

        |  READ COMMITTED

       | REPEATABLE READ
                           | SERIALIZABLE

查询隔离级别

          select @@tx_isolation

设置数据库系统的全局的隔离级别

     隔离级需要使用SET 命令来设定其语法如下:
 SET  global  TRANSACTION  ISOLATION    LEVEL   隔离级别

 

 

对于同时运行的多个事务,当这些事务访问数据库相同的数据时,如果没有采取必要的隔离机制,就会产生并发问题.

  脏读:一个事务读取了另一个事务改写但还未提交的数据,如果这些数据被回滚,则读到的数据是无效的。

  不可重复读:在同一事务中,多次读取同一数据返回的结果有所不同。换句话说就是,后续读取可以读到另一事务已提交的更新数据。

  可重复读:在同一事务中多次读取数据时,能够保证所读数据一样,也就是,后续读取不能读到另一事务已提交的更新数据。

  幻读:一个事务读取了几行记录后,另一个事务插入一些记录,幻读就发生了。再后来的查询中,第一个事务就会发现有些原来没有的记录。

MySql事务及隔离级别

标签:style   blog   http   io   color   使用   sp   数据   div   

原文地址:http://www.cnblogs.com/liuwt365/p/4098132.html

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