原子性Atomicity

核心就是 undo log 回滾日志 可以回滾到之前的狀態(tài)
原子性只是說
要么 全成
要不 回滾 全不成
如果期間smith存了300元,回滾沒掉了(破壞了一致性) ,原子性還是保證了
如果期間, 2個(gè)人都是0元被其他事物看到了, 也不算破壞了原子性
一致性Consistency :
賬戶總余額要一致. 從一個(gè)一致的狀態(tài), 變成另一個(gè)一致的狀態(tài)
2人之間轉(zhuǎn)賬, 開始時(shí)a+b=100, 就一直要是 a+b=100, 視點(diǎn)3(a0,b0)就破壞了一致性
本質(zhì)是,保證能看到所有的修改 (不會(huì)有的修改因?yàn)椴⑿斜桓采w了),保證happen_before關(guān)系
最直接的就是串行(視點(diǎn)3),手段是加鎖,鎖, 一個(gè)個(gè)事務(wù)排隊(duì)
不能線程1在寫 線程2去寫同個(gè)內(nèi)容,
但是并發(fā)低,所以我們需要隔離性(原來是這樣)
mvcc里面 是視點(diǎn)1 , 寫的時(shí)候 也能讀,但是讀到的是以前的
視點(diǎn)3就沒有一致性, 二個(gè)人都是0元的被看到了
隔離性Isolation :
沒提交的時(shí)候 對(duì)其他事物是不可見的 為了增加并發(fā)但是適當(dāng)破壞了一致性
有4個(gè)隔離級(jí)別,
排他鎖:串行化
讀寫鎖: 可重復(fù)讀(讀的時(shí)候不能寫) 不可重復(fù)讀(讀的時(shí)候能寫)
持久性Durability
一旦事務(wù)提交 修改永久保存(redo log保證),不能被看到了還回滾
事務(wù)的層層改進(jìn) 并發(fā)提升:
只有這個(gè)才是完全的一致性
排隊(duì)串行,就一個(gè)隊(duì)

↓改進(jìn) 多個(gè)隊(duì),不相關(guān)的表不用在一個(gè)隊(duì)

讀讀↓ 可并行

再提高并發(fā),就是讀不鎖,讀的時(shí)候隨時(shí)可以寫(會(huì)造成不可重復(fù)讀)
最終的進(jìn)化↓ 現(xiàn)在實(shí)際中用的 到這時(shí)候 只有寫寫會(huì)沖突


