真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

MYSQL中的事務(wù)-創(chuàng)新互聯(lián)

一、事務(wù)

事務(wù),由一個(gè)有限的數(shù)據(jù)庫(kù)操作序列構(gòu)成,這些操作要么全部執(zhí)行,要么全部不執(zhí)行,是一個(gè)不可分割的工作單位。

公司主營(yíng)業(yè)務(wù):成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)、移動(dòng)網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出華容免費(fèi)做網(wǎng)站回饋大家。二、事務(wù)的四大特征

1.原子性(Atomicity):事務(wù)作為一個(gè)整體被執(zhí)行,包含在其中的對(duì)數(shù)據(jù)庫(kù)的操作要么全部都執(zhí)行,要么全部都不執(zhí)行;

2.一致性(Consistency):指在事務(wù)開始之前和結(jié)束以后,數(shù)據(jù)不會(huì)被破壞。假如A賬戶給B賬戶轉(zhuǎn)10塊錢,不管成功與否,A和B的總金額是不變得;

3.隔離性(Isolation):多個(gè)事務(wù)并發(fā)訪問得時(shí)候,事物之間是相互隔離得,一個(gè)事務(wù)不應(yīng)該被其他事務(wù)干擾,多個(gè)并發(fā)事務(wù)之間要相互隔離;

4.持久性(Durability):表示事務(wù)完成提交后,該事務(wù)對(duì)數(shù)據(jù)庫(kù)所作得操作更改,將持久得保存在數(shù)據(jù)庫(kù)中。

三、事務(wù)并發(fā)存在的問題

1.臟讀

假設(shè)現(xiàn)在有兩個(gè)事務(wù)A、B,事務(wù)A、B交替執(zhí)行,事務(wù)A在執(zhí)行查詢操作,事務(wù)B在執(zhí)行修改操作,此時(shí)事務(wù)A讀到的是事務(wù)B未提交的數(shù)據(jù),這就是臟讀;

2.不可重復(fù)讀

假設(shè)依舊是有兩個(gè)事務(wù)A、B,在事務(wù)A范圍內(nèi)進(jìn)行兩個(gè)相同的查詢時(shí),事務(wù)B在其中一次事務(wù)A查詢后進(jìn)行了修改操作并提交,導(dǎo)致事務(wù)A的兩次查詢同一條記錄卻返回不同結(jié)果,這就是不可重復(fù)讀;

3.幻讀

依舊是事務(wù)A、B,事務(wù)A查詢一個(gè)范圍的結(jié)果集,另一個(gè)事務(wù)B往這個(gè)范圍中插入/刪除了數(shù)據(jù),并靜悄悄地提交,然后事務(wù)A再次查詢相同地范圍,兩次讀取得到地結(jié)果集不一樣了,這就是幻讀。

四、事務(wù)的隔離級(jí)別應(yīng)對(duì)
  • 讀未提交(read uncommitted):存在臟讀問題,是隔離級(jí)別最低地一種;
  • 讀已提交(read committed):存在不可重復(fù)讀問題,隔離級(jí)別高于讀未提交;
  • 可重復(fù)讀(repeatable read):可能存在幻讀問題,隔離級(jí)別高于讀已提交;
  • 串行化(serializable):當(dāng)數(shù)據(jù)庫(kù)隔離級(jí)別設(shè)置未serializable時(shí),事務(wù)B對(duì)表的寫操作,在等事務(wù)A 的讀操作。其實(shí),這是隔離級(jí)別中最嚴(yán)格的,讀寫都不允許并發(fā)。它保證了最好的安全性,性能卻是個(gè)問題;
五、MYSQL隔離級(jí)別實(shí)現(xiàn)原理

實(shí)現(xiàn)隔離機(jī)制的方法主要有兩種:讀寫鎖、一致性快照讀,即MVCC

  • 讀未提交:采取的是讀不加鎖原理

事務(wù)讀不加鎖,不阻塞其他事務(wù)的讀和寫;事務(wù)寫阻塞其他事務(wù)寫,但不阻塞其他事務(wù)讀;

  • 串行化:

所有select語句會(huì)隱式轉(zhuǎn)換未select...for share,即加共享鎖;讀共享鎖,寫加排他鎖,讀寫互斥。如果有未提交的事務(wù)正在修改某些行,所有select這些行的語句都會(huì)阻塞

  • MVCC原理:MVCC(Mutil-Version Concurrency Control),中文叫多版本并發(fā)控制,它是通過讀取歷史版本的數(shù)據(jù),來降低并發(fā)事務(wù)沖突,從而提高并發(fā)性能的一種機(jī)制。它的實(shí)現(xiàn)依賴于隱式字段、undo字段、快照讀&當(dāng)前讀、Read View。????
    • 隱式字段:對(duì)于InnoDB存儲(chǔ)引擎,每一行記錄都有兩個(gè)隱藏列DBTRXID、DBROLLPTR,如果表中沒有主鍵和非NULL唯一鍵時(shí),則還會(huì)有第三個(gè)隱藏的主鍵列DBROWID。
      • DBTRXID:記錄每一行最近一次修改(修改/更新)它的事務(wù)ID,大小為6個(gè)字節(jié);
      • DBROLLPTR:這個(gè)隱藏列就相當(dāng)于一個(gè)指針,指向回滾段的undo日志,大小為7字節(jié);
      • DBROWID:?jiǎn)握{(diào)遞增的行ID,大小為6字節(jié);
    • undo日志:多個(gè)事務(wù)并行操作某一行數(shù)據(jù)時(shí),不同事務(wù)對(duì)該行數(shù)據(jù)的修改會(huì)產(chǎn)生多個(gè)版本,然后通過回滾指針(DBROLLPTR)連一條Undo日志鏈;
      • 事務(wù)未提交的時(shí)候,修改數(shù)據(jù)的鏡像(修改前的舊版本),存到undo日志里。以便事務(wù)回滾時(shí),恢復(fù)舊版本數(shù)據(jù),撤銷未提交事務(wù)數(shù)據(jù)對(duì)數(shù)據(jù)庫(kù)的影響;
      • undo日志是邏輯日志??梢赃@樣認(rèn)為,當(dāng)delete一條記錄時(shí),undo log中會(huì)記錄一條對(duì)應(yīng)的insert日志,當(dāng)update一條記錄時(shí),它記錄一條對(duì)應(yīng)相反的update記錄;
      • 存儲(chǔ)undo日志的地方,就是回滾段。
    • 快照讀&當(dāng)前讀
      • 快照讀:讀取的是記錄數(shù)據(jù)的可見版本(有舊的版本),不加鎖,普通的select語句都是快照讀;
      • 當(dāng)前讀:讀取的是記錄數(shù)據(jù)的最新版本,顯示加鎖的都是當(dāng)前讀;
    • Read View:事務(wù)執(zhí)行快照時(shí),產(chǎn)生的讀視圖
      • 事務(wù)執(zhí)行快照讀時(shí),會(huì)生成數(shù)據(jù)庫(kù)系統(tǒng)當(dāng)前的一個(gè)快照,記錄當(dāng)前系統(tǒng)中還有哪些活躍的讀寫事務(wù),把他們放到一個(gè)列表里;
      • Read View主要是用來做可見性判斷的,即判斷當(dāng)前事務(wù)可見哪個(gè)版本的數(shù)據(jù);
      • 可見性規(guī)則:
        • m_ids:當(dāng)前系統(tǒng)中那些活躍的讀寫事務(wù)ID,它數(shù)據(jù)結(jié)構(gòu)為一個(gè)List;
        • minlimitid:m_ids事務(wù)列表中,最小的事務(wù)ID;
        • maxlimitid:m_ids事務(wù)列表中,大的事務(wù)ID;
          • 如果DBTRXID
          • 如果DBTRXID>maxlimitid,表明生成該版本的事務(wù)在生成ReadView后才生成,所以該版本不可以被當(dāng)前事務(wù)訪問;
          • 如果minlimitid<=DBTRXID<=maxlimitid,需要判斷m_ids.contains(DBTRX_ID),如果在,則代表Read View生成時(shí)刻,這個(gè)事務(wù)還活躍,還沒有commit,修改的數(shù)據(jù),當(dāng)前事務(wù)也是看不見的;如果不在,則說明這個(gè)事務(wù)在Read View生成之前就已經(jīng)commit了,修改的結(jié)果,當(dāng)前的事務(wù)是能看見的。

注意:RP和RC隔離級(jí)別大的區(qū)別就是:RC每次讀取數(shù)據(jù)前都生成一個(gè)ReadView,而RP只在第一次讀取數(shù)據(jù)時(shí)生成一個(gè)Read View。?????

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


當(dāng)前題目:MYSQL中的事務(wù)-創(chuàng)新互聯(lián)
URL鏈接:http://weahome.cn/article/diieei.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部