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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

-mysql-锁机制分为表级锁和行级锁

發布時間:2023/12/19 数据库 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 -mysql-锁机制分为表级锁和行级锁 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

聲明:本欄目所使用的素材都是凱哥學堂VIP學員所寫,學員有權匿名,對文章有最終解釋權;凱哥學堂旨在促進VIP學員互相學習的基礎上公開筆記。

mysql鎖機制分為表級鎖和行級鎖 myISAM 引擎不支持事物!

排他鎖:

Set Autocommit=0; // 把事物設置成手動事物!

排他鎖又稱為寫鎖,簡稱X鎖 排他鎖就是不能與其他鎖并存,如A事務獲取了一行數據的排他鎖,事務就不能再獲取該行的其他鎖 必須等A事物的排他鎖結束才能對一行數據進行增刪改! mysql InnoDB引擎默認的修改數據語句,update,delete,insert都會自動給涉及到的數據加上排他鎖,select語句默認不會加任何鎖類型,如果加排他鎖可以使用select ...for update語句

實驗1:

下圖兩個用戶都設置了手動事物 實驗證明 A 把數據刪了 B還能查到 B也要進行commit 提交或者roll回滾才能看到修改后的數據!

實驗2:

A事物還在執行 B事就對這行數據進行操作 B事物卡住在這里!

實驗3:

A把sid=1的數據改成了2
然后b要把sid的數據改成5 結果失敗了 原因是已經沒有sid=1 這條數據了
早就被A修改成2了
如果B的條件是 把sid=2的數據修改成5 那就能操作成功了!

實驗4:

A把查詢出來的數據加上排他鎖
B也對這條數據去加排他鎖
然后卡住了
要等A執行commit提交 A的排他鎖才能結束!

下圖用工具測試:

排他鎖 A用戶已經把這個表用排他鎖鎖住了
B用戶去修改數據 然后卡在這里
要等A用戶執行Commit 提交 B用戶才能執行

再看看下圖 結果是10
因為A用戶把sid改成10
B用戶的條件是sid=1
沒有此條數據 所以修改不上!

共享鎖:

Lock in share mode

第一 共享鎖不能與排他鎖共存在!

第二 共享鎖在自動事物的情況下不會發生沖突

第三 共享鎖在手動事物的情況下會出現一系列問題!

第四 共享鎖可以多個用戶對同一條記錄鎖定!

實驗1:

在手動事物的情況下 A先對這一行數據進行了排他鎖 然后B用戶又去對這行數據進行共享鎖 死活不給B用戶操作 要等A用戶把這個事物處理完才能給B用戶進行排他鎖! 反之結果還是一樣 排他鎖和共享鎖不能共存!

實驗2:

在手動事物下 A和B 都對這一條數據加上共享鎖了 然后A事務要修改 會處于等待狀態 他在等B用戶來操作 只要B一來操作 系統就會把B用戶掐死掉 先來的成功執行 后來的直接被干掉

實驗3:

A用戶對sid=1記錄共享鎖鎖定
B用戶對Sid=2記錄共享鎖鎖定
然后A用戶去修改sid=2的記錄 卡住在那里
等B來操作 B一來操作 B就完蛋了!
這個故事告訴我們 被干掉總是B用戶!

Sqlyog實驗

雙方各鎖了一條數據

A對B鎖定的數據進行更改
A處于等待
B對A的數據進行改變
B用戶的鎖干掉了

最后兩個人都把事物提交或者回滾
就能查詢出真實數據了!

后執行的遭殃 直接被干掉了!

轉載于:https://my.oschina.net/kaige123/blog/1526942

總結

以上是生活随笔為你收集整理的-mysql-锁机制分为表级锁和行级锁的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。