免费观看又色又爽又黄的小说免费_美女福利视频国产片_亚洲欧美精品_美国一级大黄大色毛片

MySQL的事務(wù)與鎖-創(chuàng)新互聯(lián)

MySQL事物的實(shí)現(xiàn)需要依賴數(shù)據(jù)庫提供的鎖。

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

MySQL支持MyISAM存儲(chǔ)引擎、Memory存儲(chǔ)引擎、InnoDB存儲(chǔ)引擎,其中只有InnoDB存儲(chǔ)引擎支持事務(wù)。

事務(wù)簡介 事務(wù)的定義

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

事務(wù)的特性

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

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

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

Durability:持久性。當(dāng)事務(wù)成功執(zhí)行結(jié)束后,事務(wù)對(duì)數(shù)據(jù)庫的修改是永久性的。數(shù)據(jù)不會(huì)因?yàn)橄到y(tǒng)故障而丟失。

控制事務(wù) 事務(wù)控制語句

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

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

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

MySQL事物的隔離級(jí)別
事務(wù)的隔離級(jí)別臟讀不可重復(fù)讀幻讀
讀未提交
讀已提交×
可重復(fù)讀××
可序列化讀×××
事務(wù)的臟讀

一個(gè)事務(wù)讀取到了另一個(gè)事務(wù)還未提交的數(shù)據(jù)。

事務(wù)的不可重復(fù)讀

指在同一個(gè)事務(wù)中,前后兩次讀取的數(shù)據(jù)結(jié)果不一致。

MySQL的鎖

MySQL采用鎖的機(jī)制來解決并發(fā)一致性問題,從而保證事務(wù)的隔離性。當(dāng)一個(gè)事務(wù)在進(jìn)行操作時(shí)會(huì)對(duì)操作的數(shù)據(jù)進(jìn)行加鎖,從而限制另一個(gè)事務(wù)的操作。

InnoDB鎖的類型

InnoDB存儲(chǔ)引擎支持行級(jí)鎖和表級(jí)鎖,默認(rèn)采用行級(jí)鎖。

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

查詢語句select默認(rèn)不會(huì)加任何類型鎖,因此當(dāng)數(shù)據(jù)上有了排他鎖,還是可以通過查詢語句select獲取到數(shù)據(jù)。

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

意向鎖是InnoDB存儲(chǔ)引擎自維護(hù)的,用戶無法手動(dòng)操作。

InnoDB的鎖機(jī)制

InnoDB的行鎖是通過索引實(shí)現(xiàn)的,因此只有通過索引查詢數(shù)據(jù)時(shí),InnoDB才會(huì)使用行級(jí)鎖。

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

死鎖

死鎖是指兩個(gè)或兩個(gè)以上的事務(wù)在執(zhí)行過程中,因?yàn)榛ハ嗟却蛘咭驗(yàn)闋帄Z相同的資源而造成的互相等待的現(xiàn)象。

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

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

當(dāng)前標(biāo)題:MySQL的事務(wù)與鎖-創(chuàng)新互聯(lián)
網(wǎng)址分享:http://newbst.com/article24/dipsce.html

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

廣告

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

成都seo排名網(wǎng)站優(yōu)化