日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

事务:Transaction详解

發布時間:2023/12/29 综合教程 38 生活家
生活随笔 收集整理的這篇文章主要介紹了 事务:Transaction详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、事務概念:
      一組sql語句操作單元,組內所有SQL語句完成一個業務,如果整組成功:意味著全部SQL都實現;如果其中任何一個失敗,意味著整個操作都失敗。失敗,意味著整個過程都是沒有意義的。應該是數據庫回到操作前的初始狀態。這種特性,就叫“事務”。

2、為什么要存在事務?
  1)失敗后,可以回到開始位置
  2)沒都成功之前,別的用戶(進程,會話)是不能看到操作內的數據修改的

3、事務4大特征ACID:

  1)原子性[atomicity]:功能不可再分,要么全部成功,要么全部失敗
  2)一致性[consistency]:事務要求所有的DML語句操作的時候,必須保證同時成功或者同時失敗
  3)隔離性[isolation]:事務A和事務B之間具有隔離性
  4)持久性[durability]:是事務的保證,事務終結的標志(內存的數據持久到硬盤文件中)

3、相關概念:

【SQL執行過程】1)執行階段   2)將執行結果,提交到數據庫的階段

其中我們的事務日志,就是保存執行階段的結果,如果用于選擇提交,則才將執行的結果提交到數據庫。

默認的執行方式叫做,自動提交。執行完畢,自動完成提交工作。如果你想要所有SQL語句全部成功,就需要關閉自動提交功能。
“自動提交”:存在一個系統變量,Autocommit可以對自動提交進行設置。

4、事務操作:

方法一:

show variables like 'autocommit'; #查看自動提交是否開啟
set autocommit=1(開啟自動提交)
set autocommit=0(關閉自動提交),關閉后,再次執行相應的更新語句發現,在其它連接(會話)中查看數據,沒有發生變化,因為結果沒有提交。

方法二(提倡):

1)開啟事務:start transaction; 關閉自動提交。如果事務結束了,成功或者失敗,都會將自動提交機制,回到start時的狀態。
2)成功-->提交:commit;
3)失敗-->回滾:rollback;

5、重要限制:

  存儲引擎必須是innodb才能生效。

6、個人理解:

    把事務看作一個容器,暫時在該容器(start transaction)中操作(增刪改查),如果不出錯,就立即更新數據庫(commit),即公開可見。如果出錯,就立即回滾數據庫(rollback),即恢復初始狀態,數據庫更新停止。

可以高效地防止錯誤的發生,快速恢復至初始化狀態。

7、實驗測試:

步驟一:新建兩張表,一張是班費表(class),另一張是學生個人錢財表(stu)。

步驟二:開啟事務進行數據操作,注意同時開兩個數據庫窗口,方便我們查看實驗效果

窗口1:

此時,可以查看到窗口1中的數據已經更新(我的理解是僅僅是在“事務容器”內更新完成),但是還沒有上傳至數據庫真正更新。在另一個窗口中可見數據庫并沒有更新成功:

此時,必須在窗口1中的事務中輸入commit命令,才能完成真正意義上的更新,無論開多少個窗口,都可以看到數據更新的內容:

如果在“事務容器”中更新數據時出現問題,就需要使用rollback命令立即恢復到初始狀態。

總結

以上是生活随笔為你收集整理的事务:Transaction详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。