亚洲最大看欧美片,亚洲图揄拍自拍另类图片,欧美精品v国产精品v呦,日本在线精品视频免费

  • 站長資訊網
    最全最豐富的資訊網站

    什么是臟讀?

    什么是臟讀?

    什么是臟讀?

    臟讀又稱無效數據的讀出,是指在數據庫訪問中,事務T1將某一值修改,然后事務T2讀取該值,此后T1因為某種原因撤銷對該值的修改,這就導致了T2所讀取到的數據是無效的,值得注意的是,臟讀一般是針對于update操作的。

    解決方法

    mysql數據庫定義了四種隔離級別:

    • serializable:可避免臟讀、不可重復讀、虛讀情況的發(fā)生。

    • repeatable read:可以避免臟讀、不可重復讀情況的發(fā)生。

    • read committed:可以避免臟讀情況發(fā)生。

    • read uncommitted:最低級別,都會發(fā)生。

    注意:事務的隔離級別收到數據庫的限制,不同的數據庫支持的隔離級別不一定相同

    臟讀:修改時加排他鎖,直到事務提交后才釋放,讀取時加上共享鎖后(這樣在事務1讀取數據的過程中,其他事務就不會修改該數據),不允許任何事務操作該數據,只能讀取,之后1如果有更新操作,那么會轉換為排他鎖,其他事務更無權參與進來讀寫,這樣就防止了臟讀問題

    但是當事務1讀取數據過程中,有可能其他事務也讀取了該數據,讀取完畢后共享鎖釋放,此時事務1修改數據,修改完畢提交事務,其他事務再次讀取數據時候發(fā)現數據不一致,就會出現先不可重復讀問題,所以這樣不能夠避免不可重復讀問題

    當執(zhí)行不同的隔離級別時,可能會發(fā)生各種各樣不同的問題。下面對他們進行總結并舉例說明:

    臟讀發(fā)生在一個事務A讀取了被另一個事務B修改,但是還未提交的數據。假如B回退,則事務A讀取的是無效的數據。這跟不可重復讀類似,但是第二個事務不需要執(zhí)行提交。


    推薦教程:《PHP教程》《MySQL教程》

    贊(0)
    分享到: 更多 (0)
    網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號