天天看點

事務的四大特性(ACID)| 學習筆記

開發者學堂課程【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, 表示復原,即復原到事務的起點,之前做的所有操作都被撤消了!

事務的四大特性(ACID)| 學習筆記