zoukankan      html  css  js  c++  java
  • MySQL 事物

    事务

    1.理解

    完成某个功能的整个过程 称为一个事务。
    同生共死:整个过程中如果出现一点错误,整个事务失败。整个过程都成功 整个事务成功
    如:转账
    
    1000         1000
    张三   --  》  李四
    
    500         1500
    0           2000
    
    
    

    2.特性

    1.原子性 整个事务不可分割
    2. 一致性 整个事务过程中数据保持一致的 
    3. 持久性 数据持久化保存
    4.隔离性:事务与事务之间的隔离关系
    		隔离级别:低 --- 高
    			1. 读未提交 read uncommitted
    				引发问题:脏读  模拟发工资
    				解决:提升隔离级别
    			2. 读已提交 read committed
    				引发问题:不能读重复数据  
    				解决:提升隔离级别
    			3. 可重复读 repeatable read  mysql默认的隔离级别是 repeatable read
    				引发问题:幻读   
    				解决:提升隔离级别
    			4. 串行化 serializable  这个级别比较浪费资源,效率比较低,项目中一般不用
    

    3.实现事务的过程

    3. 实现事务的过程(MySQL数据库默认一个sql语句是一个事务)
      1.查看当前数据库事务的提交方式
        SHOW VARIABLES LIKE 'autocommit';
      2.将事务的提交方式设置手动
         SET autocommit = 0;
      3.手动开启事务
         START TRANSACTION;
      4.编写事务流程
         
      5.如果没有问题,成功,执行提交
         COMMIT;
      6.失败回滚
         rollback;
       
    

    4.隔离性演示

    4-1 读未提交
    引发问题:脏读  模拟发工资
    		解决:提升隔离级别
    		
    		员工再次查询,查看结果
    		
    		
    查看当前会话的隔离机制	select @@tx_isolation;
    修改当前会话的隔离机制 set session transaction isolation level read uncommitted;
    
    

    A窗口

    # A 事务
    select @@tx_isolation;
    set session transaction isolation level read uncommitted;  #把隔离修改为第一级别 读未提交
    set session transaction isolation level read committed;  #把隔离修改为第二级别 读已提交
    
    #设置自动提交为 off
    set autocommit = 0;
    #手动打开事务
    start transaction;
    
    
    #给张三发工资
    update account set money = money + 10000 where name = '张三';
    
    select * from account;
    commit;
    rollback;
    

    B窗口

    #B 事务
    select @@tx_isolation;
    set session transaction isolation level read uncommitted;
    set session transaction isolation level read committed;  #把隔离修改为第二级别 读已提交
    
    #设置自动提交为 off
    set autocommit = 0;
    #手动打开事务
    start transaction;
    
    
    select * from account;
    
    rollback;
    
  • 相关阅读:
    使用wps跨ubuntu和windows编辑“.doc”文档。报错“编辑受限”,乱码,软件卡死,强制关闭
    【Python】断言功能Assertion
    【Python】hasattr() getattr() setattr() 使用方法详解
    【python】self & cls
    【Python】2.x与3​​.x版本的选用&版本间的区别
    【python】 del 的用法
    【python】参数中的*args和**kwargs
    解方程AX=b与矩阵分解:奇异值分解 特征值分解 QR分解 三角分解 Cholesky分解
    【python】dist-packages和site-packages的区别
    【python】脚本连续发送QQ邮件
  • 原文地址:https://www.cnblogs.com/conglingkaishi/p/15215427.html
Copyright © 2011-2022 走看看