中文字幕第五页-中文字幕第页-中文字幕韩国-中文字幕最新-国产尤物二区三区在线观看-国产尤物福利视频一区二区

MySQL的事務與鎖-創(chuàng)新互聯

MySQL事物的實現需要依賴數據庫提供的鎖。

專注于為中小企業(yè)提供成都網站設計、成都網站制作服務,電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)田林免費做網站提供優(yōu)質的服務。我們立足成都,凝聚了一批互聯網行業(yè)人才,有力地推動了成百上千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網站建設實現規(guī)模擴充和轉變。MySQL的事務

MySQL支持MyISAM存儲引擎、Memory存儲引擎、InnoDB存儲引擎,其中只有InnoDB存儲引擎支持事務。

事務簡介 事務的定義

數據庫的事務由一組DML語句組成,即insert、update、delete。通過事務可以保證數據庫中數據的完整性,保證這一組DML操作要么全部執(zhí)行,要么全部不執(zhí)行。因此,可以把事務看成是一個邏輯工作單元,可以通過提交或回滾操作來結束一個事務。當事務被成功提交給數據庫時,事務會保證其中所有操作都成功完成且結果被永久保存在數據庫中;如果有部分操作沒有成功完成,事務中的所欲操作都需要被執(zhí)行回滾,數據則回到事務執(zhí)行前的狀態(tài)。

事務的特性

Atomicity:原子性。事務中的所有DML操作,要么全部執(zhí)行成功,要么全部執(zhí)行失敗,不會存在一部分執(zhí)行成功,一部風執(zhí)行失敗的的情況。事務在執(zhí)行過程中發(fā)生錯誤,操作的數據會被回滾到事務開始前的狀態(tài)。

Consistency:一致性。事務在開始執(zhí)行前后執(zhí)行結束后,數據庫中數據的完整性沒有被破壞。

Isolation:隔離性。數據庫支持并發(fā)操作,允許多個客戶端或多個事務同時操作數據庫中的數據。隔離性能夠防止各事務并發(fā)執(zhí)行時由于交叉執(zhí)行而導致的數據不一致。

Durability:持久性。當事務成功執(zhí)行結束后,事務對數據庫的修改是永久性的。數據不會因為系統(tǒng)故障而丟失。

控制事務 事務控制語句

通過事務控制語句可以開啟一個事務、提交一個事務和回滾一個事務。MySQL同時還提供了保存點的機制,以方便在執(zhí)行事務發(fā)生錯誤的時候,可以控制事務回滾的位置。

使用事務控制語句
事物的控制語句作用
begin或start transaction二者都是顯式開啟一個事務
commit或commit work二者都是提交事務,是已對數據庫進行的所有修改成為永久性的
rollback或rollback work二者都是回滾事務,并撤銷已經修改但未提交的所有操作
savepoint [保存點名稱]在事務中創(chuàng)建一個保存點,一個事務中可以有多個保存點
rollback to [保存點名稱]回滾事務到指定保存點
releasesavepoint [保存點名稱]刪除事務中的保存點
set transaction設置事務的隔離級別
事物的并發(fā)

數據庫允許多個客戶端同時訪問,當這些客戶端并發(fā)訪問數據庫中的同一部分數據時,如果沒有采取必要的隔離措施就容易造成并發(fā)一致性問題,從而破壞數據的完整性。

MySQL事物的隔離級別
事務的隔離級別臟讀不可重復讀幻讀
讀未提交
讀已提交×
可重復讀××
可序列化讀×××
事務的臟讀

一個事務讀取到了另一個事務還未提交的數據。

事務的不可重復讀

指在同一個事務中,前后兩次讀取的數據結果不一致。

MySQL的鎖

MySQL采用鎖的機制來解決并發(fā)一致性問題,從而保證事務的隔離性。當一個事務在進行操作時會對操作的數據進行加鎖,從而限制另一個事務的操作。

InnoDB鎖的類型

InnoDB存儲引擎支持行級鎖和表級鎖,默認采用行級鎖。

行級鎖
  • 共享鎖:也叫讀鎖,同一個數據對象上可以有多把共享鎖,如果一個事務在數據對象上加了共享鎖,則該事務可以讀取數據,但不能修改,其他事務可以在該數據對象上繼續(xù)添加共享鎖。
  • 排它鎖:也叫寫鎖,同一個數據對象上只能有一把排它鎖,獲取到數據排它鎖的事務可以讀取和修改數據。

查詢語句select默認不會加任何類型鎖,因此當數據上有了排他鎖,還是可以通過查詢語句select獲取到數據。

表級鎖
  • 意向共享鎖(IS):事務在給數據添加行級共享鎖之前,必須先取得該表的意向共享鎖。
  • 意向排他鎖(IX):事務在給數據添加行級排他鎖之前,必須先取得該表的意向排他鎖。

意向鎖是InnoDB存儲引擎自維護的,用戶無法手動操作。

InnoDB的鎖機制

InnoDB的行鎖是通過索引實現的,因此只有通過索引查詢數據時,InnoDB才會使用行級鎖。

MySQL的行級鎖是針對索引加的鎖,不是針對表中的行加級鎖。雖然是訪問不同行的記錄,但如果表中不存在對應的索引,或者使用了不同的索引,就會造成鎖的沖突而鎖住整張表。

死鎖

死鎖是指兩個或兩個以上的事務在執(zhí)行過程中,因為互相等待或者因為爭奪相同的資源而造成的互相等待的現象。

避免死鎖
  • 以固定的方式訪問表和行。
  • 大事務拆小。
  • 在同一個事務中,盡可能做到一次鎖定所需要的所有資源,減少死鎖概率。
  • 降低隔離級別。
  • 為表添加合理的索引。

你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網查看詳情吧

當前標題:MySQL的事務與鎖-創(chuàng)新互聯
網址分享:http://m.2m8n56k.cn/article24/dipsce.html

成都網站建設公司_創(chuàng)新互聯,為您提供電子商務全網營銷推廣App設計網站內鏈小程序開發(fā)網頁設計公司

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯

成都seo排名網站優(yōu)化
主站蜘蛛池模板: 另类专区欧美 | 影院亚洲 | 亚洲一区二区三区久久精品 | 女网址www呦| 古代级a毛片可以免费看 | 免费看的一级片 | 久久香蕉国产线看观看亚洲片 | 日韩在线第一区 | 国产中文字幕免费观看 | 国产在线成人精品 | 久久手机精品视频 | 亚洲一区二区免费 | 欧美另类69xxxxx视频 | 久久日本精品一区二区免费 | 99视频在线播放 | 97超视频在线观看 | 久久久久欧美情爱精品 | 视频在线观看一区 | 国产成人精品高清免费 | 成年男女男精品免费视频网站 | 国产精品毛片无码 | 亚洲综合一二三区 | 国产成人一区二区三区精品久久 | 成人国产在线24小时播放视频 | 免费毛片视频网站 | 亚洲超大尺度激情啪啪人体 | 国产亚洲影院 | www色午夜| 午夜主播福利视频在线观看 | 国产亚洲欧美在线播放网站 | 欧美成人se01短视频在线看 | 日韩一区二区三区不卡视频 | 国产男女爽爽爽免费视频 | 欧美成人私人视频88在线观看 | 亚洲综合网在线观看首页 | 国产原创91 | 久久久久久国产精品三级 | 久久久久久福利 | 成年人在线观看视频免费 | 99精品免费观看 | 国产成人无精品久久久 |