帶您深入了解SQL Server事務(wù)
SQL Server事務(wù)是SQL數(shù)據(jù)庫中非常重要的概念,但是究竟什么是SQL Server事務(wù)呢?下文對SQL Server事務(wù)作了詳細(xì)的介紹,供您參考。
SQL Server事務(wù)可以看作是由對數(shù)據(jù)庫的若干操作組成的一個單元,這些操作要么都完成,要么都取消,從而保證數(shù)據(jù)滿足一致性的要求。事務(wù)的一個典型例子是銀行中的轉(zhuǎn)帳操作,帳戶A把一定數(shù)量的款項 轉(zhuǎn)到帳戶B上,這個操作包括兩個步驟,一個是從帳戶A上把存款減去一定數(shù)量,二是在帳戶B上把存款加上相同的數(shù)量。這兩個步驟顯然要么都完成,要么都取 消,否則銀行就會受損失。顯然,這 個轉(zhuǎn)帳操作中的兩個步驟就構(gòu)成一個事務(wù)。
SQL Server事務(wù)還有如下ACID特征。
ACID分別是四個英文單詞的首寫字母,這四個英文單詞是Atomicity、Consistency、Isolation、Durability,分別翻譯為原子性、一致性、隔離性、持久性。
原子性:指事務(wù)中的操作,或者都完成,或者都取消。
一致性:指事務(wù)中的操作保證數(shù)據(jù)庫中的數(shù)據(jù)不會出現(xiàn)邏輯上不一致的情況,一致性一般會隱含的包括在其他屬性之中。
隔離性:指當(dāng)前的事務(wù)與其他未完成的事務(wù)是隔離的。在不同的隔離級別下,事務(wù)的讀取操作,可以得到的結(jié)果是不同的。
持久性:指對事務(wù)發(fā)出COMMIT命令后,即使這時發(fā)生系統(tǒng)故障,事務(wù)的效果也被持久化了。與此相反的是,當(dāng)在事務(wù)執(zhí)行過程中,系統(tǒng)發(fā)生故障,則事務(wù)的操作都被回滾,即數(shù)據(jù)庫回到事務(wù)開始 之前的狀態(tài)。
對 數(shù)據(jù)庫中的數(shù)據(jù)修改都是在內(nèi)存中完成的,這些修改的結(jié)果可能已經(jīng)寫到硬盤也可能沒有寫到硬盤,如果在操作過程中,發(fā)生斷電,強(qiáng)制關(guān)閉SQL*Plus窗口 或系統(tǒng)錯誤等故障,數(shù)據(jù)庫可以保證未結(jié)束的事務(wù)對數(shù)據(jù)庫的 數(shù)據(jù)修改結(jié)果即使已經(jīng)寫入磁盤,在下次數(shù)據(jù)庫啟動后也會被全部撤銷;而對于結(jié)束的事務(wù),即使其修改的結(jié)果還未寫入磁盤,在數(shù)據(jù)庫下次啟動后會通過事務(wù)日志 中的記錄進(jìn)行“重做”,即把 丟失的數(shù)據(jù)修改結(jié)果重新生成,并寫入磁盤,從而保證結(jié)束事務(wù)對數(shù)據(jù)修改的永久化。這樣也保證了事務(wù)中的操作要么全部完成,要么全部撤銷。
【編輯推薦】