這篇文章主要講解了如何實現(xiàn)MySQL事務及Spring隔離級別,內(nèi)容清晰明了,對此有興趣的小伙伴可以學習一下,相信大家閱讀完之后會有幫助。
10年的銀川網(wǎng)站建設經(jīng)驗,針對設計、前端、開發(fā)、售后、文案、推廣等六對一服務,響應快,48小時及時工作處理。營銷型網(wǎng)站建設的優(yōu)勢是能夠根據(jù)用戶設備顯示端的尺寸不同,自動調(diào)整銀川建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)從事“銀川網(wǎng)站設計”,“銀川網(wǎng)站推廣”以來,每個客戶項目都認真落實執(zhí)行。
1、事務具有ACID特性
2、事務的隔離級別
1)隔離級別的定義與問題
隔離級別 | 臟讀可能性 | 不可重復度可能性 | 幻讀可能性 | 加鎖讀 |
READ UNCONMITED | Yes | Yes | Yes | No |
RED COMMITED | No | Yes | Yes | No |
REPEATABLE READ | No | No | Yes | No |
SERIALIZABLE | No | No | No | Yes |
2)如果查看修改和MySQL的隔離級別
show variables like 'tx_isolation'; # 查看隔離級別,MySQL8以前 show variables like 'transaction_isolation'; # 查看隔離級別,MySQL8 set global transaction_isolation='READ-COMMITTED'; // 設置隔離級別,閥域READ-UNCOMMITTED、READ-COMMITTED、REPEATABLE-READ、SERIALIZABLE
事務的隔離級別可以是Session層的,我們可以對不同的Session設置不同級別:
set session transaction isolation level read uncommitted; set session transaction isolation level read committed; set session transaction isolation level repeatable read; set session transaction isolation level serializable;
3)Spring事務隔離級別
Spring事務默認使用數(shù)據(jù)庫的隔離級別,可以通過注解@Transactional中的isolation參數(shù)調(diào)整Session級的隔離級別。隔離級別是會話級別的,JDBC的java.sql.Connection接口支持隔離級別的設置。
Spring在開啟事務時(DataSourceTransactionManager.doBegin),根據(jù)注解配置,對Connection的隔離級別進行設置:
MySQL驅(qū)動com.mysql.cj.jdbc.ConnectionImpl執(zhí)行SQL語句調(diào)整會話級的隔離級別
3、死鎖
死鎖是指兩個或多個事務在同一資源上相互占用,并請求鎖定對方占用的資源,從而導致惡性循環(huán)。死鎖示例:
# 事務一 start transaction; update account set money=10 where id=1; update account set money=20 where id=2; commit; # 事務二 start transaction; update account set money=10 where id=2; update account set money=20 where id=1; commit;
假設碰巧,事務一和事務二同時執(zhí)行完第一個update語句,接著準備執(zhí)行第二條update語句,卻發(fā)現(xiàn)記錄已被對方鎖定,然后2個事務都等待對方釋放資源,同時持有對方需要的鎖,這樣就會出現(xiàn)死循環(huán)。
為了避免死鎖問題,數(shù)據(jù)庫實現(xiàn)了各種死鎖檢測和死鎖超長機制,InnoDB處理死鎖的方式是:將持有最少行級排他鎖的事務進行回滾。
看完上述內(nèi)容,是不是對如何實現(xiàn)MySQL事務及Spring隔離級別有進一步的了解,如果還想學習更多內(nèi)容,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
本文題目:如何實現(xiàn)MySQL事務及Spring隔離級別
分享鏈接:http://www.rwnh.cn/article34/jdcose.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供ChatGPT、、網(wǎng)站建設、商城網(wǎng)站、網(wǎng)站設計公司、虛擬主機
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)