傾斜的鏡子 mysql MySQL 鎖入門

2021-10-19 22:06:20 字數 1189 閱讀 2619

意向鎖

innodb除行級鎖以外,還在表級別,新增了一種叫做意向鎖的概念,其表示事務即將對該錶的某些行做讀或者寫操作

共享意向鎖,表示某事務即將要對該錶的某些行資料加共享鎖

排它意向鎖,表示某事務即將要對該錶的某些行資料加排他鎖

舉個例子:

select ... lock in share mode 將在表上持有is共享意向鎖,select for update則是在表上持有ix排他意向鎖

意向鎖的兩個使用規約:

事務在持有表上某行資料的行共享鎖之前,必須先持有表上的共享意向鎖,或者級別更高的排他意向鎖

事務在持有表上某行資料的行排他鎖之前,必須先持有表上的排他意向鎖

表級別的意向鎖和行級別的鎖,排斥關係如下:

xixsis

xconflict

conflict

conflict

conflict

ixconflict

compatible

conflict

compatible

sconflict

conflict

compatible

compatible

isconflict

compatible

compatible

compatible

舉乙個例子:

事務a執行了select lock in share mode ,這時,事務a持有了is鎖和s鎖(為啥要加上 lock in share mode 呢?不加,就是快照讀,不會要求去持有鎖,反過來,利用lock in share mode,可以在業務上實現原子讀寫操作哦,大家可以自己思考一下) 事務b要在相同的行上,執行update 語句,那麼這時,事務b首先要去持有表級別的ix鎖,根據上圖第2行最後一列,ix 和 is 是共享的,所以,這個沒問題。然後,事務b要對相同的行,做寫操作,所以其需要持有x鎖,根據上圖第1行第3列,x和s是不相容的,所以事務b需要等待事務a結束以後,才能執行。

反思1:如果事務a使用select for update,事務b會如何反映?(結果一樣,事務b會等待事務a結束)

反思2:如果事務b,update不同的行,事務b會如何反映?(結果不一樣,事務b不需要等待事務a)

反思3:如果根據第一行第三列的規則,豈不是乙個事務做了update操作,另乙個事務就不能讀了?寫阻塞讀?(其實讀,都是快照讀,並不會要求持有s鎖)

愛因斯坦的鏡子

愛因斯坦小時候是個十分貪玩的孩子。他的母親常常為此憂心忡忡,母親的再三告誡對他來講如同耳邊風。直到16歲的那年秋天,一天上午,父親將正要去河邊釣魚的愛因斯坦攔住,並給他講了乙個故事,正是這個故事改變了愛因斯坦的一生。故事是這樣的 昨天,愛因斯坦父親說,我和咱們的鄰居傑克大叔清掃南邊工廠的 乙個大煙囪...

鏡子中的我

你的努力別怕別人看不到,也千萬別怕自己吃虧,你的吃虧,別人也看得到。別計較太多,別抱怨太多,你的計較和抱怨,別人同樣看得到,你的優點,也許一天兩天,別人看不出來,也感受不到,但是路遙知馬力,1年2年,只要你堅持,別放棄你最初的執著,你身邊的人一定能感受得到,這個過程,也許,就是積累機會的過程吧!今天...

unity實現延遲的鏡子

一。用unity實現在左半邊螢幕顯示外部攝像頭的畫面,右半邊螢幕延遲顯示外部攝像頭的畫面。二。實現原理 1.獲取外部攝像頭 2.把當前攝像頭的拍攝到的畫面轉換成流並儲存 3.把儲存的流轉成,並刪除流 三。指令碼如下 1.常量的定義 private listcameratexturebty new l...