欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

都有什么情況會導致數據庫鎖表呢

林國瑞2年前80瀏覽0評論

都有什么情況會導致數據庫鎖表呢?

數據庫鎖表:在數據庫里,同一個數據可能有多個人來讀取或更改,為了防止更改的時候別人也同時更改,這里一般要鎖住表不讓別人改。當然還有其它各種復雜情況。

數據庫鎖從類型上講,有共享鎖,意向鎖,排他鎖。從鎖的粒度角度來說,可以分為為行、頁鍵、鍵范圍、索引、表或數據庫獲取鎖。(鎖粒度是被封鎖目標的大小,封鎖粒度小則并發性高,但開銷大,封鎖粒度大則并發性低但開銷?。?/p>

可能的原因有:

(1)字段不加索引:在執行事務的時候,如果表中沒有索引,會執行全表掃描,如果這時候有其他的事務過來,就會發生鎖表!

(2)事務處理時間長:事務處理時間較長,當越來越多事務堆積的時候,會發生鎖表!

(3)關聯操作太多:涉及到很多張表的修改等,在并發量大的時候,會造成大量表數據被鎖!

出現鎖表的解決方法有:

(1)通過相關的sql語句可以查出是否被鎖定,和被鎖定的數據!

(2)為加鎖進行時間限定,防止無限死鎖!

(3)加索引,避免全表掃描!

(4)盡量順序操作數據!

(5)根據引擎選擇合理的鎖粒度!

(6)事務中的處理時間盡量短!

生產中出現死鎖等問題是比較嚴重的問題,因為通常死鎖沒有明顯的錯誤日志,只有在發現錯誤的時候才能后知后覺的處理,所以,一定要盡力避免!

擴展資料:

封鎖是指事務T在對某個數據對象(例如表、記錄等)操作之前,先向系統發出請求,對其加鎖。加鎖后事務T就對該數據對象有了一定的控制,在事務T釋放它的鎖之前,其它的事務不能更新此數據對象。

鎖表的基本類型有:

(1)排它鎖(記為X鎖)

排它鎖又稱為寫鎖。若事務T 對數據對象A 加上X 鎖,則只允許T 讀取和修改A , 其它任何事務都不能再對A 加任何類型的鎖,直到T 釋放A 上的鎖。

(2)共享鎖(記為S鎖)

共享鎖又稱為讀鎖。若事務T 對數據對象A 加上S 鎖,則其它事務只能再對A 加S 鎖,而不能加X 鎖,直到T 釋放A 上的S 鎖。X鎖和S鎖都是加在某一個數據對象上的。

封鎖單元有:

封鎖的對象可以是邏輯單元,也可以是物理單元。

邏輯單元: 屬性值、屬性值集合、元組、關系、索引項、整個索引、整個數據庫等;

物理單元:頁(數據頁或索引頁)、塊等。

封鎖對象可以很大也可以很小,例如對整個數據庫加鎖、對某個屬性值加鎖。封鎖對象的大小稱為封鎖的粒度。封鎖的粒度越大,系統中能夠被封鎖的對象就越少,并發度也就越小,但系統開銷也越??;封鎖的粒度越小,并發度越高,但開銷也就越大。

選擇封鎖粒度時必須同時考慮開銷和并發度兩個因素,進行權衡,以求得最優的效果。

一般原則為:

(1)需要處理大量元組的用戶事務:以關系為封鎖單元;

(2)需要處理多個關系的大量元組的用戶事務:以數據庫為封鎖單位;

(3)只處理少量元組的用戶事務:以元組為封鎖單位

參考資料: