數據庫 事務(Transaction)的學習筆記
web
概念:事務是訪問並可能更新各類數據項的一個程序執行單元。 English difined: A transaction is a collections of operations that form a single unit of work. 特色:(ACID) 原子性(atomicity) 一致性(consistency) 隔離性(isolation) 持久性(durability) 補充:隔離性的理解 事務的隔離性確保事務併發執行後的系統狀態與這些事務以某種次序一個接着一個執行後的狀態是等價的。 實際例子的解決: 1.可見的外部寫(observable external write) 定義:寫的結果在數據庫系統的外部以外看到,但實際上數據可能暫未寫到數據庫中大多數系統只容許該操 做在事務進入提交狀態後發生。 解決:先在非易失行存儲設備中臨時寫下與外部相關的全部數據,而後在事務進入提交狀態後再執行真正的寫操做。 2.用戶在自動取款機上提款,但在即將取款成功時,系統出錯。 解決:複雜一些,相對於上面的。從新啓動後執行一個補償事務,好比將現金存回用戶的帳戶,而非重啓後再次執行 該事務,把現金提取出來(由於用戶可能不在了哇!) 3.用戶在Web上進行預約。可能在預約事務剛剛提交後數據庫系統或服務器發生崩潰。即事務已經提交, 但外部的寫操做未發生(用戶因爲某些緣由未能獲得預約結果的反饋) 解決:應用程序必須設計成當用戶再次鏈接到web應用程序時,她可以看到她的事務是否成功。 參考資料:《數據庫系統概念 (原書第6版)》 第14章節