SQL的隔離級(jí)別

SQL的隔離級(jí)別有四種,它們分別是讀未提交(read uncommitted)、讀已提交(read committed)、可重復(fù)讀(repetable read)?和?串行化(serializable)。下面分別來解釋一下。

讀未提交:讀未提交指的是一個(gè)事務(wù)在提交之前,它所做的修改就能夠被其他事務(wù)所看到。

讀已提交:讀已提交指的是一個(gè)事務(wù)在提交之后,它所做的變更才能夠讓其他事務(wù)看到。

可重復(fù)讀:可重復(fù)讀指的是一個(gè)事務(wù)在執(zhí)行的過程中,看到的數(shù)據(jù)是和啟動(dòng)時(shí)看到的數(shù)據(jù)是一致的。未提交的變更對(duì)其他事務(wù)不可見。

串行化:顧名思義是對(duì)于同一行記錄,寫會(huì)加寫鎖,讀會(huì)加讀鎖。當(dāng)出現(xiàn)讀寫鎖沖突的時(shí)候,后訪問的事務(wù)必須等前一個(gè)事務(wù)執(zhí)行完成,才能繼續(xù)執(zhí)行。

這四個(gè)隔離級(jí)別可以解決臟讀、不可重復(fù)讀、幻象讀這三類問題??偨Y(jié)如下

其中隔離級(jí)別由低到高是:讀未提交 < 讀已提交 < 可重復(fù)讀 < 串行化

隔離級(jí)別越高,越能夠保證數(shù)據(jù)的完整性和一致性,但是對(duì)并發(fā)的性能影響越大。大多數(shù)數(shù)據(jù)庫的默認(rèn)級(jí)別是讀已提交(Read committed),比如 Sql Server、Oracle ,但是 MySQL 的默認(rèn)隔離級(jí)別是?可重復(fù)讀(repeatable-read)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容