MySQL的隔離級(jí)別有以下四個(gè):
讀未提交(Read Uncommitted):最低的隔離級(jí)別,允許一個(gè)事務(wù)讀取另一個(gè)未提交的事務(wù)所做的修改。這種級(jí)別可能導(dǎo)致臟讀(Dirty Read)。
讀已提交(Read Committed):保證一個(gè)事務(wù)只能讀取到已經(jīng)提交的數(shù)據(jù)。避免了臟讀,但仍可能導(dǎo)致不可重復(fù)讀(Non-Repeatable Read)。
可重復(fù)讀(Repeatable Read):保證一個(gè)事務(wù)在執(zhí)行期間多次讀取同一記錄時(shí),所讀取的值是一致的。避免了臟讀和不可重復(fù)讀,但仍可能導(dǎo)致幻讀(Phantom Read)。
串行化(Serializable):最高的隔離級(jí)別,強(qiáng)制事務(wù)串行執(zhí)行,避免了臟讀、不可重復(fù)讀和幻讀。但也導(dǎo)致了性能下降,因?yàn)槭聞?wù)需要依次執(zhí)行。
可以使用以下語句來設(shè)置隔離級(jí)別:
SET TRANSACTION ISOLATION LEVEL <isolation level>;
其中<isolation level>
可以是以上四個(gè)隔離級(jí)別中的任意一個(gè)。