oracle資料庫髒讀DirtRead

2021-08-19 18:00:22 字數 429 閱讀 7638

客戶端a和客戶端b分別取請求資料量為1000w的資料庫,a訪問的時間為9點00分,並且select查詢所有資料需要10分鐘直到9點10分才可以返回結果。客戶端b在9點05分的時候去update資料庫所有資料,並且commit成功。請問客戶端a查詢的資料是客戶端update前的還是update之後的資料?

答案是更新之前的。

oracle或者是mysql都有乙個一致性讀原則,在a客戶端訪問的時候看到的資料庫表是什麼資料 此時它要查詢的就是什麼資料。當客戶端b去update資料庫的時候,會把原來的資料放到乙個undo的地方,如果客戶端b commit成功失敗,就會去undo的地方把原先的資料rollback,那麼如果b提交成功了 客戶端a在9點10分的時候回去undo找是不是想要的資料,如果不是則會報乙個經典的資料庫異常snap shot too old(快照太舊異常),反之如果找到原先的資料則返回給客戶端a

資料庫避免髒讀,幻讀

一 髒讀 乙個事務讀取到了另外乙個事務沒有提交的資料 詳細解釋 髒讀就是指 當乙個事務正在訪問資料,並且對資料進行了修改,而這種修改還沒有提交到資料庫中,這時,另外乙個事務也訪問這個資料,然後使用了這個資料。因為這個資料是還沒有提交的資料,那麼另外乙個事務讀到的這個資料是髒資料,依據髒資料所做的操作...

資料庫幻讀 髒讀 不可重複讀

要理解幻讀 髒讀 不可重複讀,必須先搞清楚事務的隔離級別 資料庫事務的隔離級別有4個,由低到高依次為read uncommitted read committed repeatable read serializable 這四個級別可以逐個解決髒讀 不可重複讀 幻讀 這幾類問題。隔離級別 髒讀不可重...

資料庫髒讀 不可重複讀 幻讀

資料庫髒讀 不可重複讀 幻讀 1.髒讀 髒讀就是指當乙個事務正在訪問資料,並且對資料進行了修改,而這種修改還沒有提交到資料庫中,這時,另外乙個事務也訪問這個資料,然後使用了這個資料。2.不可重複讀 是指在乙個事務內,多次讀同一資料。在這個事務還沒有結束時,另外乙個事務也訪問該同一資料。那麼,在第乙個...