Mysql 遇到神奇的“本次本客戶端效現象”,資料庫並未被改變 + 神奇“卡頓現象”
阿新 • • 發佈:2021-06-22
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'; #舉例轉賬事務 starttransaction; 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