mysql事务服务_MySQL (事务篇)
1、事務內,存在兩條sql語句,第一條執行成功了,第二條執行失敗了,commit之后,什么結果?
結果:第一條執行成功,第二條執行失敗,不進行回滾
注意:MySQL 中的回滾,必須人為去做,在PHP 中,我們常常使用 try catch 來進行事務的執行和回滾
考察點:對 MySQL 事務應用的熟練程度
2、在事務執行過程中,如果服務器突然掛掉,MySQL 處理過程及結果?
正常執行事務時,過程是
try{
開啟事務
執行sql
提交事務
}catch(\Exception $e){
回滾
}
當開始事務后,每執行一條sql語句,都會對應一條相反的sql語句(insert 對應 delete,update 對應相反 update)寫入 undo.log(回滾日志中)。
當事務執行完畢后,會寫入一個checkpoint(檢查點)到 undo.log 日志中,MySQL 在下次執行事務或者重啟MySQL,只會檢查最近的checkpoint后面的,checkpoint 之前的說明已經執行成功不需要回滾了。
如果執行過程中,服務器突然掛掉,也就是說,執行了部分sql,不確定提沒提交,那么這個時候,重啟MySQL 時,MySQL 會檢查 undo.log,如果最近的檢查點后面有內容,則說明有部分sql執行了,但是沒有提交,這時,MySQL 會對數據進行回滾。
并執行redo.log內的sql,進行重做
考察點:MySQL 事務的執行過程,內部是如何實現的
3、MySQL 事務執行流程圖
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的mysql事务服务_MySQL (事务篇)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hibernate mysql自定义变量
- 下一篇: vue 箭头函数兼容性_前端学习计划之V