當前位置:生活全書館 >

IT科技

> mysql資料庫死鎖解決方法

mysql資料庫死鎖解決方法

mysql資料庫死鎖解決方法如下:

mysql資料庫死鎖解決方法

1、對於按鈕等控制元件,點選後使其立刻失效,不讓使用者重複點選,避免對同時對同一條記錄操作。

2、使用樂觀鎖進行控制。樂觀鎖大多是基於資料版本(Version)記錄機制實現。即為資料增加一個版本標識,在基於資料庫表的版本解決方案中,一般是 通過為資料庫表增加一個“version”欄位來實現。讀取出資料時,將此版本號一同讀出,之後更新時,對此版本號加一。此時,將提交資料的版本資料與數 據庫表對應記錄的當前版本資訊進行比對,如果提交的資料版本號大於資料庫表當前版本號,則予以更新,否則認為是過期資料。樂觀鎖機制避免了長事務中的資料 庫加鎖開銷(使用者A和使用者B操作過程中,都沒有對資料庫資料加鎖),大大提升了大併發量下的系統整體效能表現。Hibernate 在其資料訪問引擎中內建了樂觀鎖實現。需要注意的是,由於樂觀鎖機制是在系統中實現,來自外部系統的使用者更新操作不受系統的控制,因此可能會造 成髒資料被更新到資料庫中。

3、使用悲觀鎖進行控制。悲觀鎖大多數情況下依靠資料庫的鎖機制實現,以保證操作最大程度的獨佔性。但隨之而來的就是資料庫效能的大量開銷,特別是對長事務而言,這樣的開銷往往無法承受。如一個金融系統, 當某個操作員讀取使用者的資料,並在讀出的使用者資料的基礎上進行修改時(如更改使用者賬戶餘額),如果採用悲觀鎖機制,也就意味著整個操作過程中(從操作員讀 出資料、開始修改直至提交修改結果的全過程,甚至還包括操作員中途去煮咖啡的時間),資料庫記錄始終處於加鎖狀態,可以想見,如果面對成百上千個併發,這 樣的情況將導致災難性的後果。所以,採用悲觀鎖進行控制時一定要考慮清楚。

標籤: 資料庫 mysql 死鎖
  • 文章版權屬於文章作者所有,轉載請註明 https://shqsg.com/dianzi/zpw508.html