MySQL复习资料(八)——MySQL-事务
📋導讀📋
💝博客主頁:紅目香薰_CSDN博客-大數據,MySQL,Java領域博主💝
?本文由在下【紅目香薰】原創,首發于CSDN?
🤗2022年最大愿望:【服務百萬技術人】🤗
📋前言📋
本文屬于系列文章,分別為:
MySQL復習資料(一)——MySQL環境安裝
MySQL復習資料(二)——MySQL-DDL語句
MySQL復習資料(三)——MySQL-DML語句
MySQL復習資料(四)——MySQL-聚合函數
MySQL復習資料(五)——MySQL-索引
MySQL復習資料(六)——MySQL-多表聯合查詢
MySQL復習資料(七)——MySQL-存儲過程
MySQL復習資料(八)——MySQL-事務
MySQL復習資料(九)——MySQL-圖形化工具使用
📋正文📋
MySQL復習資料(八)——MySQL-事務
目錄
事務的概念
事務的基本特性
事務的基本操作
事務示例
事務的概念
現實生活中,人們經常會進行轉賬操作,轉賬可以分為轉入和轉出兩部分,只有這兩個部分都完成才認為轉賬成功。在數據庫中,這個過程是使用兩條SQL語句來實現的,如果其中任意一條語句出現異常沒有執行,則會導致兩個賬戶的金額不同步,造成錯誤。為了防止上述情況的發生,就需要使用MySQL中的事務(Transaction)。
在MySQL中,事務就是針對數據庫的一組操作,它可以由一條或多條SQL語句組成,且每個SQL語句是相互依賴的。只要在程序執行過程中有一條SQL語句執行失敗或發生錯誤,則其他語句都不會執行。也就是說,事務的執行要么成功,要么就返回到事務開始前的狀態,這就保證了同一事務操作的同步性和數據的完整性。
事務的基本特性
MySQL中的事務必須滿足A、C、I、D這4個基本特性,具體如下:
(1)原子性(Atomicity)。原子性是指一個事務必須被視為一個不可分割的最小工作單元,只有事務中所有的數據庫操作都執行成功,才算整個事務執行成功。事務中如果有任何一個SQL語句執行失敗,已經執行成功的SQL語句也必須撤銷,數據庫的狀態退回到執行事務前的狀態。
(2)一致性(Consistency)。一致性是指在事務處理時,無論執行成功還是失敗,都要保證數據庫系統處于一致的狀態,保證數據庫系統不會返回到一個未處理的事務中。MySQL中的一致性主要由日志機制實現,通過日志記錄數據庫的所有變化,為事務恢復提供了跟蹤記錄。
(3)隔離性(Isolation)。隔離性是指當一個事務在執行時,不會受到其他事務的影響。保證了未完成事務的所有操作與數據庫系統的隔離,直到事務完成為止,才能看到事務的執行結果。隔離性相關的技術有并發控制、可串行化、鎖等。當多個用戶并發訪問數據庫時,數據庫為每一個用戶開啟的事務,不能被其他事務的操作數據所干擾,多個并發事務之間要相互隔離。
(4)持久性(Durability)。持久性是指事務一旦提交,其對數據庫的修改就是永久性的。需要注意的是,事務的持久性不能做到百分百的持久,只能從事務本身的角度來保證永久性,而一些外部原因導致數據庫發生故障,如硬盤損壞,那么所有提交的數據可能都會丟失。
事務的基本操作
在默認情況下,用戶執行的每一條SQL語句都會被當成單獨的事務自動提交。如果要將一組SQL語句作為一個事務,則需要先執行以下語句顯式地開啟一個事務。
START TRANSACTION;上述語句執行后,每一條SQL語句不再自動提交,用戶需要使用以下語句手動提交,只有事務提交后,其中的操作才會生效。
COMMIT;如果不想提交當前事務,可以使用如下語句取消事務(即回滾)。
ROLLBACK;需要注意的是,ROLLBACK只能針對未提交的事務回滾,已提交的事務無法回滾。當執行COMMIT或ROLLBACK后,當前事務就會自動結束。
事務示例
回滾成功
start transaction;update users set introduce = 'My Heart Will Go On.' where id=1;update users set introduce = 'Some on like you.' where id=2;rollback;select * from users;提交成功
start transaction;update users set introduce = 'My Heart Will Go On.' where id=1;update users set introduce = 'Some on like you.' where id=2;commit;select * from users;修改成功。
在大型項目中是不允許使用事務的,但是在小型項目里面很實用的功能。
總結
以上是生活随笔為你收集整理的MySQL复习资料(八)——MySQL-事务的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySQL复习资料(七)——MySQL-
- 下一篇: MySQL复习资料(九)——MySQL-