日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

Mysql 事务学习笔记

發(fā)布時(shí)間:2025/7/14 数据库 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Mysql 事务学习笔记 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1讀寫鎖

1.1為什么為出現(xiàn)讀寫鎖?

當(dāng)一個(gè)人在update這個(gè)數(shù)據(jù),另一個(gè)人在select查詢這個(gè)數(shù)據(jù)的時(shí)候.會(huì)產(chǎn)生一種數(shù)據(jù)混亂,應(yīng)運(yùn)產(chǎn)生的鎖.

鎖的概念:

  • 讀鎖是共享的,并且不會(huì)阻塞. 寫鎖則是排他的
  • 同一個(gè)時(shí)間內(nèi)只能有一個(gè)用戶寫入.

1.2 鎖粒度.

  • 太多的鎖又會(huì)影響效率,為了保證效率,會(huì)給不同級(jí)別的失誤.安排不同的鎖.最好只是精確的鎖定. 因?yàn)殒i本身不僅影響效率,也消耗資源.通常情況下,鎖越少效率越高.

鎖策略,就是在鎖的開(kāi)銷和數(shù)據(jù)的安全性做出平衡.大部分商業(yè)數(shù)據(jù)庫(kù)并沒(méi)有提供特別多選擇,只是在表上加上行級(jí)鎖.

1.3 Mysql 的鎖策略

  • 表鎖,最基本也是開(kāi)銷最小策略.搜定這張表,在用戶對(duì)表修改時(shí)候,需要先獲得鎖,并且阻塞其他用戶的讀寫操作. 只有沒(méi)有寫鎖的時(shí)候其他用戶才能獲得讀鎖,并且讀鎖之前不會(huì)阻塞
  • 行級(jí)鎖可以最大成都的支持并發(fā)處理

2 事務(wù)

事務(wù)是一組原子性的sql查詢,如果能執(zhí)行查詢?nèi)空Z(yǔ)句,那么查詢?nèi)?如果又一條語(yǔ)句不成功,那么所有的都不執(zhí)行.事務(wù)都要經(jīng)過(guò)ACID 測(cè)試不然沒(méi)有意義

2.1 ACID事務(wù)的四項(xiàng)檢測(cè)

  • 原子性(atomicity)
    • 一個(gè)事務(wù)被視為一個(gè)不可分割的最小工作單元.就像原子不可分割一樣.
  • 一致性(consistency)
    • 數(shù)據(jù)庫(kù)總是從一個(gè)一致性的狀態(tài)轉(zhuǎn)換為另一個(gè)一致性的狀態(tài).要么全部成功,要么全部失敗,結(jié)果應(yīng)該是一致的,不應(yīng)該有的成功,有的失敗.
  • 隔離性(Isolation)
    • 一個(gè)事務(wù)在做修改成功之前,對(duì)其他的事務(wù)是不課件的. 當(dāng)你對(duì)一個(gè)賬戶進(jìn)行取款操作,那么另一個(gè)程序是無(wú)法看見(jiàn)你的操作結(jié)果.直到你成功之前
      • 隔離級(jí)別Isolation Level
        • Read uncommited
          • 在READ UNCOMMITED級(jí)別. 事務(wù)中的修改,即使沒(méi)有提交,對(duì)其他事務(wù)可見(jiàn).
        • READ COMMITED
          • 大多數(shù)數(shù)據(jù)庫(kù)的默認(rèn)級(jí)別都是Read committed.Mysql不是. 一個(gè)事務(wù)開(kāi)始的時(shí)候,只能看見(jiàn)自己已經(jīng)提交的修改.
            在不提交前,對(duì)其他事務(wù)完全不可見(jiàn).
        • REPEATABLE READ
          • REPEATABLE READ 解決了臟讀的問(wèn)題,該級(jí)別保證同一個(gè)事務(wù)多次讀取結(jié)果是一致的. 但同事導(dǎo)致幻讀的問(wèn)題.當(dāng)讀取某個(gè)范圍的數(shù)據(jù)的時(shí)候,里一個(gè)事務(wù)又在該范圍內(nèi)插入新的數(shù)據(jù)
            當(dāng)之前事務(wù)在讀取的時(shí)候會(huì)產(chǎn)生幻行.
        • SERIALIZABLE
          • 最高Isolation Level級(jí)別,通過(guò)強(qiáng)制事務(wù)串的執(zhí)行.避免了之前說(shuō)的幻讀,SERIALIZABLE 會(huì)在每一行數(shù)據(jù)加鎖.所以可能導(dǎo)致大量超時(shí)和鎖爭(zhēng)搶的問(wèn)題.
            非常少用.只有當(dāng)需要保持?jǐn)?shù)據(jù)一致性而接受沒(méi)有并發(fā)的情況下才考慮.
  • 持久性(durability)
    • 一旦事務(wù)提交,修改就會(huì)永久保存在數(shù)據(jù)庫(kù)中.及時(shí)系統(tǒng)崩潰也不會(huì)丟失.這個(gè)策略主要保證數(shù)據(jù)不會(huì)丟失.而且上持久性也分不同的級(jí)別.有的持久程度高,又的持久程度低.

1-1 各種隔離級(jí)別的區(qū)別和特點(diǎn)

Isolation Level(隔離)臟讀可能性不可重讀可能性幻讀可能性加鎖讀
Read uncommittedYESYESYESNO
READ COMMITTEDNOYESYESNO
PEPETABLE READNONOYESNO
SERIALIZABLENONONOYES

轉(zhuǎn)載于:https://www.cnblogs.com/maxaimee/p/6534272.html

總結(jié)

以上是生活随笔為你收集整理的Mysql 事务学习笔记的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。