原創(chuàng)說(shuō)明:本文為本人原創(chuàng)作品,絕非他處轉(zhuǎn)載,轉(zhuǎn)賬請(qǐng)注明出處
1.事務(wù)的定義:事務(wù)是指多個(gè)操作單元組成的合集,多個(gè)單元操作是整體不可分割的,要么都操作不成功,要么都成功。其必須遵循四個(gè)原則(ACID)。
原子性(Atomicity):即事務(wù)是不可分割的最小工作單元,事務(wù)內(nèi)的操作要么全做,要么全不做;
一致性(Consistency):在事務(wù)執(zhí)行前數(shù)據(jù)庫(kù)的數(shù)據(jù)處于正確的狀態(tài),而事務(wù)執(zhí)行完成后數(shù)據(jù)庫(kù)的數(shù)據(jù)還是應(yīng)該處于正確的狀態(tài),即數(shù)據(jù)完整性約束沒(méi)有被破壞;如銀行轉(zhuǎn)帳,A轉(zhuǎn)帳給B,必須保證A的錢一定轉(zhuǎn)給B,一定不會(huì)出現(xiàn)A的錢轉(zhuǎn)了但B沒(méi)收到,否則數(shù)據(jù)庫(kù)的數(shù)據(jù)就處于不一致(不正確)的狀態(tài)。
隔離性(Isolation):并發(fā)事務(wù)執(zhí)行之間互不影響,在一個(gè)事務(wù)內(nèi)部的操作對(duì)其他事務(wù)是不產(chǎn)生影響,這需要事務(wù)隔離級(jí)別來(lái)指定隔離性;
持久性(Durability):事務(wù)一旦執(zhí)行成功,它對(duì)數(shù)據(jù)庫(kù)的數(shù)據(jù)的改變必須是永久的,不會(huì)因比如遇到系統(tǒng)故障或斷電造成數(shù)據(jù)不一致或丟失。
2.事務(wù)的類型
數(shù)據(jù)庫(kù)分為本地事務(wù)跟全局事務(wù)
本地事務(wù):普通事務(wù),獨(dú)立一個(gè)數(shù)據(jù)庫(kù),能保證在該數(shù)據(jù)庫(kù)上操作的ACID。
分布式事務(wù):涉及兩個(gè)或多個(gè)數(shù)據(jù)庫(kù)源的事務(wù),即跨越多臺(tái)同類或異類數(shù)據(jù)庫(kù)的事務(wù)(由每臺(tái)數(shù)據(jù)庫(kù)的本地事務(wù)組成的),分布式事務(wù)旨在保證這些本地事務(wù)的所有操作的ACID,使事務(wù)可以跨越多臺(tái)數(shù)據(jù)庫(kù);
Java事務(wù)類型分為JDBC事務(wù)跟JTA事務(wù)
JDBC事務(wù):即為上面說(shuō)的數(shù)據(jù)庫(kù)事務(wù)中的本