事務(wù)是什么
事務(wù)指的是一連串?dāng)?shù)據(jù)庫(kù)的操作掀亩。
1.1事務(wù)應(yīng)該具有4個(gè)屬性:
原子性:一個(gè)事務(wù)是一個(gè)不可分割的工作單位厉颤,事務(wù)中包括的操作要么都做美旧,要么都不做
一致性:事務(wù)的開始和結(jié)束鼎文,數(shù)據(jù)都必須保持一致
隔離性:一個(gè)事務(wù)的執(zhí)行不能被其他事務(wù)干擾渔肩,中間狀態(tài)不可見(jiàn)
持久性:一旦提交,它對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)的改變就應(yīng)該是永久性的
這四個(gè)屬性通常稱為ACID特性拇惋。
1.2 并發(fā)時(shí)事務(wù)引發(fā)的問(wèn)題
1. 臟讀 (事務(wù)A讀到了事務(wù)B的中間狀態(tài)周偎,破壞了隔離性)
2. 不可重復(fù)讀? (事務(wù)進(jìn)行中抹剩,再次讀取以前讀過(guò)的數(shù)據(jù),卻發(fā)現(xiàn)其讀出的數(shù)據(jù)已經(jīng)發(fā)生了改變蓉坎、或某些記錄已經(jīng)被刪除了0木臁)?
3. 幻讀(事務(wù)進(jìn)行中,再次以相同條件查找蛉艾,發(fā)現(xiàn)其他事務(wù)插入了滿足其查詢條件的新數(shù)據(jù))?
幻讀和不可重復(fù)讀的區(qū)別:
不可重復(fù)讀的重點(diǎn)是修改和刪除:在同一事務(wù)中钳踊,同樣的條件,第一次讀的數(shù)據(jù)和第二次讀的數(shù)據(jù)不一樣勿侯。(因?yàn)橹虚g有其他事務(wù)提交了修改/刪除)
幻讀的重點(diǎn)在于新增:在同一事務(wù)中拓瞪,同樣的條件,,第一次和第二次讀出來(lái)的記錄數(shù)不一樣助琐。(因?yàn)橹虚g有其他事務(wù)提交了插入)
1.3 為了解決上面的問(wèn)題 (制定事務(wù)隔離的標(biāo)準(zhǔn))
SQL標(biāo)準(zhǔn)定義了4類隔離級(jí)別祭埂,每一種級(jí)別都規(guī)定了一個(gè)事務(wù)中所做的修改,哪些在事務(wù)內(nèi)和事務(wù)間是可見(jiàn)的弓柱,哪些是不可見(jiàn)的沟堡。低級(jí)別的隔離級(jí)別一般支持更高的并發(fā)處理,并擁有更低的系統(tǒng)開銷矢空。