新聞中心
什么是C#數(shù)據(jù)庫事務

C#數(shù)據(jù)庫事務是指作為單個邏輯工作單元執(zhí)行的一系列操作。
設想網(wǎng)上購物的一次交易,其付款過程至少包括以下幾步數(shù)據(jù)庫操作:
◆更新客戶所購商品的庫存信息
◆保存客戶付款信息--可能包括與銀行系統(tǒng)的交互
◆生成訂單并且保存到數(shù)據(jù)庫中
◆更新用戶相關(guān)信息,例如購物數(shù)量等等
正常的情況下,這些操作將順利進行,最終交易成功,與交易相關(guān)的所有數(shù)據(jù)庫信息也成功地更新。但是,如果在這一系列過程中任何一個環(huán)節(jié)出了差錯,例如在更新商品庫存信息時發(fā)生異常、該顧客銀行帳戶存款不足等,都將導致交易失敗。一旦交易失敗,數(shù)據(jù)庫中所有信息都必須保持交易前的狀態(tài)不變,比如最后一步更新用戶信息時失敗而導致交易失敗,那么必須保證這筆失敗的交易不影響數(shù)據(jù)庫的狀態(tài)--庫存信息沒有被更新、用戶也沒有付款,訂單也沒有生成。否則,數(shù)據(jù)庫的信息將會一片混亂而不可預測。
C#數(shù)據(jù)庫事務正是用來保證這種情況下交易的平穩(wěn)性和可預測性的技術(shù)。
C#數(shù)據(jù)庫事務的ACID屬性
事務處理可以確保除非事務性單元內(nèi)的所有操作都成功完成,否則不會永久更新面向數(shù)據(jù)的資源。通過將一組相關(guān)操作組合為一個要么全部成功要么全部失敗的單元,可以簡化錯誤恢復并使應用程序更加可靠。一個邏輯工作單元要成為事務,必須滿足所謂的ACID(原子性、一致性、隔離性和持久性)屬性:
◆原子性
事務必須是原子工作單元;對于其數(shù)據(jù)修改,要么全都執(zhí)行,要么全都不執(zhí)行。通常,與某個事務關(guān)聯(lián)的操作具有共同的目標,并且是相互依賴的。如果系統(tǒng)只執(zhí)行這些操作的一個子集,則可能會破壞事務的總體目標。原子性消除了系統(tǒng)處理操作子集的可能性。
◆一致性
事務在完成時,必須使所有的數(shù)據(jù)都保持一致狀態(tài)。在相關(guān)數(shù)據(jù)庫中,所有規(guī)則都必須應用于事務的修改,以保持所有數(shù)據(jù)的完整性。事務結(jié)束時,所有的內(nèi)部數(shù)據(jù)結(jié)構(gòu)(如 B 樹索引或雙向鏈表)都必須是正確的。某些維護一致性的責任由應用程序開發(fā)人員承擔,他們必須確保應用程序已強制所有已知的完整性約束。例如,當開發(fā)用于轉(zhuǎn)帳的應用程序時,應避免在轉(zhuǎn)帳過程中任意移動小數(shù)點。
◆隔離性
由并發(fā)事務所作的修改必須與任何其它并發(fā)事務所作的修改隔離。事務查看數(shù)據(jù)時數(shù)據(jù)所處的狀態(tài),要么是另一并發(fā)事務修改它之前的狀態(tài),要么是另一事務修改它之后的狀態(tài),事務不會查看中間狀態(tài)的數(shù)據(jù)。這稱為可串行性,因為它能夠重新裝載起始數(shù)據(jù),并且重播一系列事務,以使數(shù)據(jù)結(jié)束時的狀態(tài)與原始事務執(zhí)行的狀態(tài)相同。當事務可序列化時將獲得最高的隔離級別。在此級別上,從一組可并行執(zhí)行的事務獲得的結(jié)果與通過連續(xù)運行每個事務所獲得的結(jié)果相同。由于高度隔離會限制可并行執(zhí)行的事務數(shù),所以一些應用程序降低隔離級別以換取更大的吞吐量。
◆持久性
C#數(shù)據(jù)庫事務完成之后,它對于系統(tǒng)的影響是永久性的。該修改即使出現(xiàn)致命的系統(tǒng)故障也將一直保持。
DBMS的責任和我們的任務
企業(yè)級的數(shù)據(jù)庫管理系統(tǒng)(DBMS)都有責任提供一種保證事務的物理完整性的機制。就常用的SQL Server2000系統(tǒng)而言,它具備鎖定設備隔離事務、記錄設備保證事務持久性等機制。因此,我們不必關(guān)心數(shù)據(jù)庫事務的物理完整性,而應該關(guān)注在什么情況下使用數(shù)據(jù)庫事務、事務對性能的影響,如何使用事務等等。
本文將涉及到在.net框架下使用C#語言操縱數(shù)據(jù)庫事務的各個方面。
【編輯推薦】
- 分析C#不安全代碼
- 淺析C#調(diào)用ImageAnimator
- C#連接Access、SQL Server數(shù)據(jù)庫
- 淺談C#固定的和活動的變量
- 介紹C#中的值類型
當前題目:C#語言操縱數(shù)據(jù)庫事務
文章路徑:http://m.fisionsoft.com.cn/article/djoeiii.html


咨詢
建站咨詢
