開發者學堂課程【JDBC資料庫開發進階:事務的四大特性(ACID)】學習筆記,與課程緊密聯系,讓使用者快速學習知識。
課程位址:
https://developer.aliyun.com/learning/course/32/detail/680事務的四大特性(ACID)
内容介紹
l 事務
l .事務的四大特性:ACID
l .MySQL中的事務
事務
事務中需要完成的任務有:
1.事務的四大特性:ACID
2.MySQL 中的操作事務
3.jabc 中操作事務
而在MySQL中該如何操作事務?
事務其實是有兩個端點的,分為事務的開始(start transaction)和結束(commit 表示送出事務或rollback 表示復原事務,事務執行失敗,回到原來的狀态)
概述
為了友善示範事務,我們需要建立一一個account表:。
CREATE TABLE account('
id INT PRIMARY KEY AUTO_ INCREMENT,
NAME VARCHAR(30),
balance NUMERIC(10.2)
);
INSERT INTO account(NAME,balanse) VALUES
(
'
z
s', 100000
);
INSERT INTO account(NAME,balance) VALUES('I
s
', 10000);
INSERT INTO account(NAME, balane) VALUES('ww', 10000
);
SELECT
*
FROM account
;
什麼是事務
舉例:銀行轉賬!張三轉10000塊到李四的賬戶,這其實是需要兩條SQL語句
l 給張三的賬戶減去10000元;
l 給李四的賬戶加上10000元;
如果在第一條SQL語句執行後,在執行第二條SQL語句之前,程式被中斷了(可能是抛出了某個異常,也可能是其他什麼原因),那麼李四的賬戶卻沒有加上10000元,而張三卻被減去了10000元。這肯定是不行的!
事務中的多個操作,要麼完全成功,要麼完全失敗!不存在成功一半的情況!也就是說張三的賬戶減去10000元如果成功了,那麼給李四的賬戶加上10000元的操作也必須是成功的,否則給張三減去10000元,以及給李四加上10000元都是失敗的!
面試!
事務的四大特性是:
l 原子性(Atomicity):事務中所有操作是不可再分割的原子機關。事務中所有操作要麼全部執行成功,要麼全部執行失敗。
l 一緻性(Consistency):事務執行後,資料庫狀态與其他業務規則保持一緻。如轉賬業務,無論事務執行成功與否,參加轉賬的兩個賬号餘額之和應該不變的。
隔離性(Isolation):隔離性是指在并發操作中,不同僚務之間應該隔開來,使每個并發中的事務不會互相幹擾。
l 持久性:(Durability):一旦事務送出成功,事務中所有的資料操作都必須被持久化到資料庫中,即使送出事務後,資料庫馬上崩潰,在資料庫重新開機時,也必須能保證通過某種機制恢複資料。
MySQL中的事務
在預設情況下,MySQL每執行一條SQL語句,都是一個單獨的事務,如果需要在一個事務中包含多條SQL語句,那麼需要開啟事務和結束事務。
l 開啟事務:start transaction
l 結束事務:commit 或 rollback(表示復原事務,事務失敗)
在執行 SQL 語句之前,先執行 strat transaction,這就開啟了一個事務(事務的起點),然後就可以去執行多條 sQl 語句,最後要結束事務,commit 表示送出,即事務中的多條 sQL 語句所做出的影響會持久化到數握庫中。或者 rllback, 表示復原,即復原到事務的起點,之前做的所有操作都被撤消了!
