目標(biāo):
理解事務(wù)的概念,和實(shí)際應(yīng)用理解
概念
事務(wù)應(yīng)該具有4個(gè)屬性:原子性、一致性、隔離性、持久性。這四個(gè)屬性通常稱為ACID特性。
原子性(atomicity)。一個(gè)事務(wù)是一個(gè)不可分割的工作單位,事務(wù)中包括的諸操作要么都做,要么都不做。
一致性(consistency)。事務(wù)必須是使數(shù)據(jù)庫(kù)從一個(gè)一致性狀態(tài)變到另一個(gè)一致性狀態(tài)。一致性與原子性是密切相關(guān)的。
隔離性(isolation)。一個(gè)事務(wù)的執(zhí)行不能被其他事務(wù)干擾。即一個(gè)事務(wù)內(nèi)部的操作及使用的數(shù)據(jù)對(duì)并發(fā)的其他事務(wù)是隔離的,并發(fā)執(zhí)行的各個(gè)事務(wù)之間不能互相干擾。
持久性(durability)。持久性也稱永久性(permanence),指一個(gè)事務(wù)一旦提交,它對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)的改變就應(yīng)該是永久性的。接下來(lái)的其他操作或故障不應(yīng)該對(duì)其有任何影響。
實(shí)際問(wèn)題理解
- :由于未加事務(wù), 默認(rèn)機(jī)制是更新會(huì)去主庫(kù)更新,查詢會(huì)去從庫(kù)查詢 ,如反復(fù)的執(zhí)行更新再查詢這樣的邏輯,就會(huì)很大可能出現(xiàn)查詢到的數(shù)據(jù)不是最新的(也就是主庫(kù)還沒(méi)來(lái)得及同步到從庫(kù))
解決辦法1:將查詢也加事務(wù),強(qiáng)制讓其也去主庫(kù)查詢,盡可能讓更新和后面的查詢?cè)谝粋€(gè)事務(wù)完成,避免出現(xiàn)去從數(shù)據(jù)庫(kù) 數(shù)據(jù)查詢延時(shí)問(wèn)題。
- :避免事務(wù)太大,對(duì)大量數(shù)據(jù)集數(shù)據(jù)庫(kù)操作的處理
解決辦法:合并更新、插入操作,批量執(zhí)行,并適當(dāng)采用異步化的方式實(shí)現(xiàn)最終一致性,如:通過(guò)狀態(tài)控制異步處理,最終一致性
- 事務(wù)處理中不要包含遠(yuǎn)程調(diào)用,遠(yuǎn)程連接等可能網(wǎng)絡(luò)請(qǐng)求,防止因?yàn)榫W(wǎng)絡(luò)的不可靠性,造成的事務(wù)過(guò)長(zhǎng),數(shù)據(jù)庫(kù)卡死現(xiàn)象