一、數(shù)據(jù)庫(kù)事務(wù)
1.1)什么是ACID
Atomicity 原子性
對(duì)于一個(gè)操作信卡,要么全部提交,要么全部回滾丢习。
Consistency 一致性
數(shù)據(jù)庫(kù)中的數(shù)據(jù)符合現(xiàn)實(shí)世界中的約束咐低,則這些數(shù)據(jù)符合一致性见擦。比如性別約束男 & 女,人民幣數(shù)值不能為負(fù)损痰,出生地址不能為null酒来,轉(zhuǎn)賬的總金額不能變等等役首。
Isolation 隔離性
對(duì)于同一個(gè)數(shù)據(jù)的操作,各個(gè)事務(wù)對(duì)于該數(shù)據(jù)狀態(tài)的轉(zhuǎn)換互相不可見(jiàn)
Durability 持久性
現(xiàn)實(shí)狀態(tài)映射到數(shù)據(jù)庫(kù)中爹袁,意味著對(duì)數(shù)據(jù)所有的改動(dòng)都持久化到磁盤上
1.2)事務(wù)的狀態(tài)都有哪些
1.3)事務(wù)并發(fā)執(zhí)行時(shí)數(shù)據(jù)一致性問(wèn)題有哪些
臟讀:一個(gè)事務(wù)(A)讀取到了另一個(gè)
事務(wù)(B)修改過(guò)的數(shù)據(jù)
不可重復(fù)讀:另一個(gè)事務(wù)(B)修改一個(gè)
事務(wù)(A)讀取過(guò)的數(shù)據(jù)
幻讀:一個(gè)事務(wù)(A)根據(jù)
(select ... where vip='是')查詢了一些記錄档址。A未提交時(shí),另一個(gè)事務(wù)(B)寫入了(insert绎秒、update尼摹、delete都行蠢涝,以insert為例)一些符合上述搜索條件的記錄(insert into ... values(3,700,'是') )
3)SQL事務(wù)隔離級(jí)別
二惯吕、分布式場(chǎng)景下事務(wù)及數(shù)據(jù)一致性問(wèn)題
2.1)水平分庫(kù)
2.2)垂直分庫(kù)
關(guān)系型數(shù)據(jù)庫(kù)一張表數(shù)據(jù)量上兩三千萬(wàn)就會(huì)承壓過(guò)大钳宪,采取在一個(gè)庫(kù)中水平分表將數(shù)據(jù)分?jǐn)偪蓽p小壓力扳炬;
水平分庫(kù)是為了防止高并發(fā)情況下可能產(chǎn)生超出數(shù)據(jù)庫(kù)連接的系統(tǒng)假死情況提供數(shù)據(jù)庫(kù)的主從保證高可用性恨樟;
垂直分庫(kù)是為了方便業(yè)務(wù)的解耦疚俱,也可以防止磁盤過(guò)大占用隨機(jī)讀影響的效率
一般情況下除了生意特別火爆呆奕,庫(kù)存和支付不會(huì)很忙梁钾,只有訂單會(huì)多一些則只需要針對(duì)訂單表進(jìn)行分表零酪,這種情況下單體服務(wù)完全夠用?
三四苇、分布式事務(wù)解決方案
3.1)剛性事務(wù)——XA
3.2)剛性事務(wù)——2PC
3.3)剛性事務(wù)——3PC
3.4)柔性事務(wù)——可靠事務(wù)隊(duì)列
3.5)柔性事務(wù)——TCC
3.6)柔性事務(wù)——SAGA
3.7)柔性事務(wù)——基于數(shù)據(jù)補(bǔ)償
剛性事務(wù)和柔性事務(wù)對(duì)比
四纫塌、Seata概述
4.1)什么是Seata
4.2)Seata的特色功能
4.3)Seata中的角色
4.4)Seata處理分布式事務(wù)的主要流程
TM向TC申請(qǐng)開(kāi)啟全局事務(wù)钳枕,TC向TM返回全局事務(wù)ID赏壹,RM開(kāi)啟后向TC進(jìn)行注冊(cè)分支蝌借,TC記錄不同的Branch_ID,RM完成Commit后向TC發(fā)送狀態(tài)自晰,TC檢測(cè)所有Branch_ID狀態(tài)成功后向TM發(fā)送二階段提交命令(也就是
)稍坯,狀態(tài)失敗則回滾