MySQL事务处理详细讲解及完整实例下载(2)

start transaction ; select * from student; commit; select * from information_schema.INNODB_TRX;

  2.Read Committed(授权读取、读提交):读取数据的事务允许其他事务继续访问该行数据,但是未提交的写事务将会禁止其他事务访问该行。该隔离级别避免了脏读,但是却可能出现不可重复读。事务A事先读取了数据,事务B紧接了更新了数据,并提交了事务,而事务A再次读取该数据时,数据已经发生了改变。

SET session transaction isolation level read committed ; SET global transaction isolation level read committed; /*全局建议不用*/ drop procedure if exists proc_on_up; delimiter ;; create procedure proc_on_up() begin set autocommit=0; update student set name='cc' where id=1; commit; set autocommit=1; end ;; delimiter ;; call proc_on_up(); select * from student;

  3.repeatable read(可重复读取):就是在开始读取数据(事务开启)时,不再允许修改操作,事务开启,不允许其他事务的UPDATE修改操作,不可重复读对应的是修改,即UPDATE操作。但是可能还会有幻读问题。因为幻读问题对应的是插入INSERT操作,而不是UPDATE操作。避免了不可���复读取和脏读,但是有时可能出现幻读。这可以通过“共享读锁”和“排他写锁”实现。

set session transaction isolation level repeatable read;

  4.串行化、序列化:提供严格的事务隔离。它要求事务序列化执行,事务只能一个接着一个地执行,但不能并发执行。如果仅仅通过“行级锁”是无法实现事务序列化的,必须通过其他机制保证新插入的数据不会被刚执行查询操作的事务访问到。序列化是最高的事务隔离级别,同时代价也花费最高,性能很低,一般很少使用,在该级别下,事务顺序执行,不仅可以避免脏读、不可重复读,还避免了幻像读。

set session transaction isolation level serializable;

      隔离等级   脏读   不可重复读   幻读
      读未提交   YES   YES      YES
      读已提交   NO    YES         YES
      可重复读   NO    NO        YES
      串行化       NO    NO        NO

五、完整例子包括提交和回滚完整例子

drop procedure if exists pro_new; delimiter;; create procedure pro_new(out rtn int) begin declare err INT default 0; -- 如果出现异常,会自动处理并rollback declare exit handler for sqlexception ROLLBACK ; -- 启动事务 set autocommit=0; start transaction; insert into student(name,num) values(NULL,2.3); -- set err = @@IDENTITY; -- = 获取上一次插入的自增ID; set err =last_insert_id(); -- 获取上一次插入的自增ID insert into student(name,num) VALUEs('ccc',err); -- 运行没有异常,提交事务 commit; -- 设置返回值为1 set rtn=1; set autocommit=1; end ;; delimiter ;; set @n=1; call pro_new(@n); select @n;

全部实例sql文件可以到Linux公社资源站下载:

------------------------------------------分割线------------------------------------------

免费下载地址在

用户名与密码都是

具体下载目录在 /2017年资料/8月/15日/MySQL事务处理详细讲解及完整实例下载/

下载方法见

------------------------------------------分割线------------------------------------------

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/1e0d9639b93b42829a0653e952ef82eb.html