Mysql 遇到神奇的“本次本客户端效现象”,数据库并未被改变 + 神奇“卡顿现象”
2021/6/22 20:01:44
本文主要是介绍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
这篇关于Mysql 遇到神奇的“本次本客户端效现象”,数据库并未被改变 + 神奇“卡顿现象”的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-20部署MySQL集群入门:新手必读指南
- 2024-11-20部署MySQL集群教程:初学者指南
- 2024-11-20部署MySQL集群项目实战:新手教程
- 2024-11-20部署MySQL集群资料:新手入门教程
- 2024-11-20MySQL集群部署教程:入门级详解
- 2024-11-20MySQL集群教程:入门与实践指南
- 2024-11-20部署MySQL集群教程:新手入门指南
- 2024-11-20MySQL读写分离教程:轻松入门
- 2024-11-20部署MySQL集群入门:一步一步搭建你的数据库集群
- 2024-11-19部署MySQL集群学习:入门教程