資源描述:
《JDBC事務管理.docx》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在行業(yè)資料-天天文庫。
1、JDBC事務管理一、什么是事務1.1.概念事務(TRANSACTION)是作為單個邏輯工作單元執(zhí)行的一系列操作。這些操作作為一個整體一起向系統(tǒng)提交,要么都執(zhí)行、要么都不執(zhí)行。事務是一個不可分割的工作邏輯單元。事務是現(xiàn)代數(shù)據(jù)庫理論中的核心概念之一。如果一組處理步驟或者全部發(fā)生或者一步也不執(zhí)行,我們稱該組處理步驟為一個事務。當所有的步驟像一個操作一樣被完整地執(zhí)行,我們稱該事務被提交。由于其中的一部分或多步執(zhí)行失敗,導致沒有步驟被提交,則事務必須回滾到最初的系統(tǒng)狀態(tài)。1.2.ACID原則事務必須服從ISO/IEC所制定的ACID原則。ACID是原子性(atomici
2、ty)、一致性(consistency)、隔離性(isolation)和持久性(durability)的縮寫。?原子性(Atomicity):事務是一個完整的操作。事務的各步操作是不可分的(原子的);要么都執(zhí)行,要么都不執(zhí)行。?一致性(Consistency):當事務完成時,數(shù)據(jù)必須處于一致狀態(tài)。?隔離性(Isolation):對數(shù)據(jù)進行修改的所有并發(fā)事務是彼此隔離的,這表明事務必須是獨立的,它不應以任何方式依賴于或影響其他事務?永久性(Durability):事務完成后,它對數(shù)據(jù)庫的修改被永久保持,事務日志能夠保持事務的永久性。事務的原子性表示事務執(zhí)行過程中
3、的任何失敗都將導致事務所做的任何修改失效。一致性表示當事務執(zhí)行失敗時,所有被該事務影響的數(shù)據(jù)都應該恢復到事務執(zhí)行前的狀態(tài)。隔離性表示并發(fā)事務是彼此隔離。持久性表示當系統(tǒng)或介質(zhì)發(fā)生故障時,確保已提交事務的更新不能丟失。持久性通過數(shù)據(jù)庫備份和恢復來保證。一、數(shù)據(jù)庫并發(fā)問題當多個用戶并發(fā)訪問數(shù)據(jù)庫中相同的數(shù)據(jù)時,可能會出現(xiàn)并發(fā)問題。如果沒有鎖定且多個用戶同時訪問一個數(shù)據(jù)庫,則當他們的事務同時使用相同的數(shù)據(jù)時可能會發(fā)生問題。并發(fā)問題包括:?丟失或覆蓋更新。?未確認的相關性(臟讀)。?不一致的分析(非重復讀)。?幻讀。2.1.丟失更新當兩個或多個事務選擇同一行,然后基于
4、最初選定的值更新該行時,會發(fā)生丟失更新問題。每個事務都不知道其他事務的存在。最后的更新將重寫由其他事務所做的更新,這將導致數(shù)據(jù)丟失。例如,兩個編輯人員制作了同一文件的電子復本。每個編輯人員獨立地更改其復本,然后保存更改后的復本,這樣就覆蓋了原始文件。最后保存其更改復本的編輯人員覆蓋了第一個編輯人員所做的更改。如果在第一個編輯人員完成之后第二個編輯人員才能進行更改,則能避免該問題。2.1.未確認的相關性(臟讀)當?shù)诙€事務選擇其他事務正在更新的行時,會發(fā)生未確認的相關性問題。第二個事務正在讀取的數(shù)據(jù)還沒有確認并且可能由更新此行的事務所更改。例如,一個編輯人員正在
5、更改電子文件。在更改過程中,另一個編輯人員復制了該文件(該復本包含到目前為止所做的全部更改)并將其分發(fā)給預期的用戶。此后,第一個編輯人員認為目前所做的更改是錯誤的,于是刪除了所做的編輯并保存了文件。分發(fā)給用戶的文件包含不再存在的編輯內(nèi)容,并且這些編輯內(nèi)容應認為從未存在過。如果在第一個編輯人員確定最終更改前所有人都不能讀取更改的文件,則能避免該問題。2.2.不一致的分析(非重復讀)當?shù)诙€事務多次訪問同一行而且每次讀取不同的數(shù)據(jù)時,會發(fā)生不一致的分析問題。不一致的分析和未確認的相關性類似,因為其他事務也是正在更改第二個事務正在讀取的數(shù)據(jù)。然而,在不一致的分析中,
6、第二個事務讀取的數(shù)據(jù)是由已進行了更改的事務提交的。而且,不一致的分析涉及多次(兩次或更多)讀取同一行,而且每次信息都由其他事務更改;因而該行被非重復讀取。例如,一個編輯人員兩次讀取同一文件,但在兩次讀取之間,作者重寫了該文件。當編輯人員第二次讀取文件時,文件已更改。原始讀取不可重復。如果只有在作者全部完成編寫后編輯人員才能讀取文件,則能避免該問題。2.3.幻像讀當對某行執(zhí)行插入或刪除操作,而該行屬于某個事務正在讀取的行的范圍時,會發(fā)生幻像讀問題。事務第一次讀的行范圍顯示出其中一行已不復存在于第二次讀或后續(xù)讀中,因為該行已被其他事務刪除。同樣,由于其他事務的插入
7、操作,事務的第二次或后續(xù)讀顯示有一行已不存在于原始讀中。例如,一個編輯人員更改作者提交的文件,但當生產(chǎn)部門將其更改內(nèi)容合并到該文件的主復本時,發(fā)現(xiàn)作者已將未編輯的新材料添加到該文件中。如果在編輯人員和生產(chǎn)部門完成對原始文件的處理之前,所有人都不能將新材料添加到文件中,則能避免該問題。一、并發(fā)問題的解決方案當鎖定用作并發(fā)控制機制時,他能解決并發(fā)問題。這使所有事務得以在彼此完全隔離的環(huán)境中運行,不過所有時候都能有多個正在運行的事務。可串行性是通過運行一組并發(fā)事務達到的數(shù)據(jù)庫狀態(tài),等同于這組事務按某種順序連續(xù)執(zhí)行時所達到的數(shù)據(jù)庫狀態(tài)。3.1.sql-92隔離級別盡管
8、可串行性對于事務確保數(shù)據(jù)庫中的數(shù)據(jù)在所