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