sql多使用者訪問資料庫其實就是事務併發,會引起如下問題:
1、髒讀:一個事務讀取到了另外一個事務沒有提交的資料事務1:更新一條資料事務2:讀取事務1更新的記錄事務1:呼叫commit進行提交此時事務2讀取到的資料是儲存在資料庫記憶體中的資料,稱為髒讀。讀到的資料為髒資料詳細解釋:髒讀就是指:當一個事務正在訪問資料,並且對資料進行了修改,而這種修改還沒有提交到資料庫中,這時,另外一個事務也訪問這個資料,然後使用了這個資料。因為這個資料是還沒有提交的資料,那麼另外一個事務讀到的這個資料是髒資料,依據髒資料所做的操作可能是不正確的。
2、不可重複讀:在同一事務中,兩次讀取同一資料,得到內容不同事務1:查詢一條記錄事務2:更新事務1查詢的記錄事務2:呼叫commit進行提交事務1:再次查詢上次的記錄此時事務1對同一資料查詢了兩次,可得到的內容不同,稱為不可重複讀。
3、幻讀:同一事務中,用同樣的操作讀取兩次,得到的記錄數不相同事務1:查詢表中所有記錄事務2:插入一條記錄事務2:呼叫commit進行提交事務1:再次查詢表中所有記錄此時事務1兩次查詢到的記錄是不一樣的,稱為幻讀
sql多使用者訪問資料庫其實就是事務併發,會引起如下問題:
1、髒讀:一個事務讀取到了另外一個事務沒有提交的資料事務1:更新一條資料事務2:讀取事務1更新的記錄事務1:呼叫commit進行提交此時事務2讀取到的資料是儲存在資料庫記憶體中的資料,稱為髒讀。讀到的資料為髒資料詳細解釋:髒讀就是指:當一個事務正在訪問資料,並且對資料進行了修改,而這種修改還沒有提交到資料庫中,這時,另外一個事務也訪問這個資料,然後使用了這個資料。因為這個資料是還沒有提交的資料,那麼另外一個事務讀到的這個資料是髒資料,依據髒資料所做的操作可能是不正確的。
2、不可重複讀:在同一事務中,兩次讀取同一資料,得到內容不同事務1:查詢一條記錄事務2:更新事務1查詢的記錄事務2:呼叫commit進行提交事務1:再次查詢上次的記錄此時事務1對同一資料查詢了兩次,可得到的內容不同,稱為不可重複讀。
3、幻讀:同一事務中,用同樣的操作讀取兩次,得到的記錄數不相同事務1:查詢表中所有記錄事務2:插入一條記錄事務2:呼叫commit進行提交事務1:再次查詢表中所有記錄此時事務1兩次查詢到的記錄是不一樣的,稱為幻讀