數(shù)據(jù)庫單用戶模式如何改為多用戶 多個用戶同時訪問一個數(shù)據(jù)庫怎么做?
多個用戶同時訪問一個數(shù)據(jù)庫怎么做?同一數(shù)據(jù)庫中的表通常與外鍵相關(guān)聯(lián)。運行環(huán)境很多,比如SQL server、Oracle、access、MySQLSQL多用戶訪問數(shù)據(jù)庫實際上是事務(wù)并發(fā),這會導(dǎo)致以下問
多個用戶同時訪問一個數(shù)據(jù)庫怎么做?
同一數(shù)據(jù)庫中的表通常與外鍵相關(guān)聯(lián)。
運行環(huán)境很多,比如SQL server、Oracle、access、MySQL
SQL多用戶訪問數(shù)據(jù)庫實際上是事務(wù)并發(fā),這會導(dǎo)致以下問題:
1。臟讀:一個事務(wù)讀取另一個事務(wù)尚未提交的數(shù)據(jù)。事務(wù)1:更新數(shù)據(jù)事務(wù)2:讀取事務(wù)1的更新記錄。事務(wù)1:調(diào)用commit提交。此時,事務(wù)2讀取的數(shù)據(jù)是存儲在數(shù)據(jù)庫內(nèi)存中的數(shù)據(jù),稱為臟讀。讀取的數(shù)據(jù)是臟數(shù)據(jù)。臟讀是指當(dāng)一個事務(wù)正在訪問數(shù)據(jù)并修改數(shù)據(jù),但修改尚未提交到數(shù)據(jù)庫時,另一個事務(wù)也會訪問該數(shù)據(jù)并使用該數(shù)據(jù)。因為此數(shù)據(jù)是未提交的數(shù)據(jù),所以另一個事務(wù)讀取的數(shù)據(jù)是臟數(shù)據(jù),并且基于臟數(shù)據(jù)的操作可能不正確。
2. 不可重復(fù)讀?。涸谕皇聞?wù)中,同一數(shù)據(jù)讀取兩次,內(nèi)容不同。事務(wù)1:查詢記錄。事務(wù)2:更新事務(wù)1查詢的記錄。事務(wù)2:調(diào)用commit來提交。事務(wù)1:再次查詢最后一條記錄。此時,事務(wù)1查詢相同的數(shù)據(jù)兩次,并且內(nèi)容不同,這稱為不可重復(fù)讀取。
3. 虛讀:在同一個事務(wù)中,如果對同一個操作讀兩次,則記錄數(shù)會有所不同。事務(wù)1:查詢表中的所有記錄。事務(wù)2:插入一條記錄。事務(wù)2:調(diào)用commit來提交。事務(wù)1:再次查詢表中的所有記錄。此時,事務(wù)1兩次查詢不同的記錄,這稱為非真實讀取