資料庫的隔離級別:併發性作用。
read uncommited(未提交讀):沒有提交就可以讀取到資料(發出了insert,但沒有commit就可以讀取到。)很少用
read commited(提交讀):只有提交後才可以讀,常用,
repeatable read(可重複讀):mysql預設級別, 必需提交才能見到,讀取資料時資料被鎖住。
serialiazble(序列化讀):最高隔離級別,串型的,你操作完了,我才可以操作,併發性特別不好,
隔離級別 是否存在髒讀 是否存在不可重複讀 是否存在幻讀
read uncommitted(未提交讀) y y y
read commited(提交讀) n y(可採用悲觀鎖解決) y
repeatable read(可重複讀) n n y
serialiazble(序列化讀)
髒讀:沒有提交就可以讀取到資料稱為髒讀
不可重複讀:再重複讀一次,資料與你上的不一樣。稱不可重複讀。
幻讀:在查詢某一條件的資料,開始查詢的後,別人又加入或刪除些資料,再讀取時與原來的資料不一樣了。
[b][size=large][color=red]因為要兼顧效能和減少事務處理出現的錯誤,因此hibernate設成第二級別(read commited(提交讀))。但此時雖然避免了「讀髒讀」,但無法解決「不可重複讀」,因此需要使用到hibernate中的「悲觀鎖 與 樂觀鎖」來解決這一問題[/color][/size][/b]
[color=red]悲觀鎖:就是在讀資料的時候加把鎖。
樂觀鎖:就是在把資料新增乙個字段(version)進行控制。
其實很簡單。[/color]
悲觀鎖與樂觀鎖
悲觀鎖與樂觀鎖 悲觀鎖 pessimistic locking 顧名思義就是採用一種悲觀的態度來對待事務併發問題,我們認為系統中的併發更新會非常頻繁,並且事務失敗 了以後重來的開銷很大,這樣以來,我們就需要採用真正意義上的鎖來進行實現。悲觀鎖的基本思想就是每次一 個事務讀取某一條記錄後,就會把這條記...
樂觀鎖與悲觀鎖
悲觀鎖 pessimistic locking 顧名思義就是採用一種悲觀的態度來對待事務併發問題,我們認為系統中的併發更新會非常頻繁,並且事務失敗了以後重來的開銷很大,這樣以來,我們就需要採用真正意義上的鎖來進行實現。悲觀鎖的基本思想就是每次乙個事務讀取某一條記錄後,就會把這條記錄鎖住,這樣 其它的...
樂觀鎖與悲觀鎖
鎖 locking 這個概念在我們學習多執行緒的時候曾經接觸過,其實這裡的鎖和多執行緒裡面處理併發的鎖是乙個道理,都是暴力的把資源歸為自己所有。這裡我們用到鎖的目的就是通過一些機制來保證一些資料在某個操作過程中不會被外界修改,這樣的機制,在這裡,也就是所謂的 鎖 即給我們選定的目標資料上鎖,使其無法...