MySQL中的字段隔離是指,當(dāng)多個(gè)用戶同時(shí)訪問(wèn)數(shù)據(jù)庫(kù)時(shí),每個(gè)用戶訪問(wèn)到的數(shù)據(jù)是相互獨(dú)立的,不會(huì)互相影響。這種隔離的實(shí)現(xiàn)是通過(guò)設(shè)置隔離級(jí)別來(lái)實(shí)現(xiàn)的。
mysql>SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
以上代碼表示將隔離級(jí)別設(shè)置為“讀未提交”,即一個(gè)事務(wù)可以讀取到另一個(gè)未提交的事務(wù)中的數(shù)據(jù)。
mysql>SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
以上代碼表示將隔離級(jí)別設(shè)置為“讀已提交”,即一個(gè)事務(wù)只能讀取到已提交的數(shù)據(jù)。
mysql>SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
以上代碼表示將隔離級(jí)別設(shè)置為“可重復(fù)讀”,即一個(gè)事務(wù)在執(zhí)行期間讀取到的數(shù)據(jù)是一致的,即使其他事務(wù)修改了這些數(shù)據(jù)。
mysql>SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
以上代碼表示將隔離級(jí)別設(shè)置為“串行化”,即一個(gè)事務(wù)必須等待其他事務(wù)執(zhí)行完畢后才能執(zhí)行,可以保證數(shù)據(jù)的完整性。
在實(shí)際開(kāi)發(fā)中,需要根據(jù)業(yè)務(wù)場(chǎng)景選擇合適的隔離級(jí)別,以保證數(shù)據(jù)安全,同時(shí)又兼顧性能。