MySQL提供了四種事務(wù)隔離級別,分別為:讀未提交(Read uncommitted)、讀已提交(Read committed)、可重復(fù)讀(Repeatable read)和串行化(Serializable)。
讀未提交是最低級別的隔離級別,是指一個事務(wù)可以讀取另一個事務(wù)還未提交的數(shù)據(jù)。這種隔離級別不保證數(shù)據(jù)的一致性,容易出現(xiàn)臟讀(dirty read)現(xiàn)象。
讀已提交要求事務(wù)只能讀取已經(jīng)提交的數(shù)據(jù)。這種隔離級別避免了臟讀,但出現(xiàn)不可重復(fù)讀(non-repeatable read)和幻讀(phantom read)的可能性。
可重復(fù)讀要求事務(wù)在執(zhí)行期間讀取的數(shù)據(jù)保持一致性。在這個隔離級別下,事務(wù)在運(yùn)行期間多次讀取同樣的數(shù)據(jù),都將得到同樣的結(jié)果。可重復(fù)讀避免了不可重復(fù)讀,但可能會出現(xiàn)幻讀。
串行化是最高級別的隔離級別,它強(qiáng)制事務(wù)串行執(zhí)行,避免了臟讀、不可重復(fù)讀和幻讀,但是這種隔離級別的代價是數(shù)據(jù)庫的并發(fā)性能下降。
在MySQL中,設(shè)置事務(wù)隔離級別可以使用SET TRANSACTION語句。例如,要將隔離級別設(shè)置為可重復(fù)讀:
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
上一篇css圖片上下動
下一篇css圖片上下不間斷滑動