zoukankan      html  css  js  c++  java
  • Mysql 遇到神奇的“本次本客户端效现象”,数据库并未被改变 + 神奇“卡顿现象”

    Mysql 遇到神奇的“本次本客户端效现象”,数据库并未被改变+   神奇“卡顿现象”

    结论:commit 好处多多,既能保证执行操作结果符合实际情况,还能“刷新”

    ◆◆场景:为了测试关闭自动提交真的有效吗?的情况下的发现:

     

    1,神奇的“本客户端效现象”

    ◇◇客户端:mysqlworkbench

    ◇代码:

    #事务
    
    #创建事务
    
    drop table if exists `Acount`;
    
    CREATE TABLE `Acount`(
    
           `id` int PRIMARY KEY AUTO_INCREMENT,
    
        `name` varchar(50),
    
        `money` float
    
    )ENGINE=InnoDB, charSet=utf8mb4;
    
     
    
    #添加数据
    
    INSERT INTO `Acount` VALUES (default, 'huanglaoban', 100);
    
    INSERT INTO `Acount` VALUES (default, 'dangdang', 100);
    
    select * from `Acount`;
    
    #模拟转账场景:
    
    set sql_safe_updates=0; /*取消安全模式*/
    
     #关闭自动提交事务
    
     set autocommit=0;
    
     show variables like 'autocommit';
    
    #举例转账事务
    
    start transaction;
    
        update `Acount` set `money` = `money` - 10 where `name` = 'huanglaoban';
    
        update `Acount` set `money` = `money` + 10 where `name` = 'dangdang';
    
    commit;
    
     set sql_safe_updates=1;/*设置回安全模式*/
    
      #设置自动提交事务
    
     set autocommit=1;
    
     select * from `Acount`;      

    结果完美,没问题!我们要的效果符合实际。

     

    ◇测试关闭自动提交真的有效吗?

    代码语句:

    set sql_safe_updates=0; /*取消安全模式*/
     #关闭自动提交事务 
     set autocommit=0;
    update `Acount` set `money` = `money` - 10 where `name` = 'huanglaoban';
    select * from `Acount`;

    此刻试试在控制台关闭自动提交,再试试结果怎么样:结果mysqlworkbench依然刹不住车,什么操作它照常执行,而mysql控制台,依然面不改色,不为所动,不给执行操作。

    最后,我明白,一切神奇现象的背后是:少了个commit的提交。

    因为没有COMMIT,就算AUTOCOMMIT的值等于1,也会不提交到数据库。

     2,神奇“卡顿现象”

    场景:先在服务端关闭自动提交后,直接设置可以自动提交后,卡顿想现象发生:

    看我控制台大疑惑:

    解决:老铁补上commit,相当于“刷新功效”吧

    最后,大总结:

    commit 好处多多,既能保证执行操作结果符合实际情况,还能“刷新”

    参考文章:

    https://blog.csdn.net/weixin_43182179/article/details/114678955

    https://blog.csdn.net/xiaoyi23000/article/details/51690601/

    http://c.biancheng.net/view/7291.html

     
  • 相关阅读:
    HDU1272---(并查集)简单应用
    HDU1232 畅通工程---(经典并查集应用)
    HDU 1877 又一版 A+B(进制转换)
    L1-020. 帅到没朋友
    L2-001. 紧急救援---(Dijkstra,记录路径)
    JVM Class字节码之三-使用BCEL改变类属性
    JVM Class详解之一
    Jvm原理剖析与调优之内存结构
    虚拟化的发展历程和实现原理——图文详解
    JVM学习笔记(四)------内存调优
  • 原文地址:https://www.cnblogs.com/shan333/p/14918163.html
Copyright © 2011-2022 走看看