迷失在Mysql的鎖世界~

MCTW發表於2021-05-19

1.飲料

這是一杯飲料。

迷失在Mysql的鎖世界~

 

這是3杯飲料,每杯飲料的味道各不相同。

迷失在Mysql的鎖世界~

 

但是人類並不稱呼【飲料】為【飲料】,而是稱呼【飲料】為【記錄】。

2.紅章魚

這個紅色的,長的像章魚?的傢伙,我們就叫它紅章魚~

紅章魚分為頭部和觸手兩個部分。

迷失在Mysql的鎖世界~

 

紅章魚有觸手,且可以有任意根觸手。

迷失在Mysql的鎖世界~

 

紅章魚愛喝飲料,把觸手伸進杯子就能吸到飲料。

迷失在Mysql的鎖世界~

 

紅章魚將不同的觸手伸進不同的杯子,就可以同時喝多杯飲料。

迷失在Mysql的鎖世界~

 

多隻紅章魚可以同時出現。

迷失在Mysql的鎖世界~

 

但是正在喝飲料的紅觸手會排斥其它觸手,即一杯飲料裡最多隻能有一隻紅觸手。

先來先得,後來的觸手要排隊。
迷失在Mysql的鎖世界~

同一杯飲料可以有多隻紅章魚在按序排隊等待。

迷失在Mysql的鎖世界~

 

紅章魚痴迷同時吸吮多杯飲料的感覺,所以它的所有觸手要麼全在等待,要麼全在喝飲料。

也就是說,如果紅章魚的某隻觸手在排隊,那麼它的其它觸手也必須排隊,即使是沒人喝的飲料也要排隊。

迷失在Mysql的鎖世界~

 

有觸手排隊但是沒觸手伸進去喝的飲料,仍然可以被後來的其它章魚喝。

迷失在Mysql的鎖世界~

 

但是人類並不稱呼【紅章魚】為【紅章魚】。

人類稱呼【紅章魚的頭部】為【意向排它鎖】;

人類稱呼【正在喝飲料的紅觸手】為【排它記錄鎖】。

3.綠章魚

這些是綠章魚。

迷失在Mysql的鎖世界~

 

綠章魚的絕大多數特性和紅章魚完全相同,除了一點:綠章魚的觸手願意跟其它綠色觸手一起分享飲料。

迷失在Mysql的鎖世界~

 

因為紅章魚不會向其它任何顏色的章魚分享飲料,且綠章魚只會向綠章魚分享飲料,

所以紅章魚和綠章魚不會同時喝同一杯飲料,後來的要排隊。
迷失在Mysql的鎖世界~

 

根據以上規則,紅章魚和綠章魚可以組成很多狀態。下面就是一種,編號表示他們來的順序。

迷失在Mysql的鎖世界~

 

但是人類並不稱呼【綠章魚】為【綠章魚】,

人類稱呼【綠章魚的頭部】為【意向共享鎖】;

人類稱呼【正在喝飲料的綠觸手】為【共享記錄鎖】。

4.空地

事實上,飲料杯未必都是相鄰的,它們之間可能有空地。

迷失在Mysql的鎖世界~

 

無論兩個飲料杯相隔多遠,它們之間如果沒有其它飲料杯,那我們就說這兩個飲料杯之間是同一塊空地。

迷失在Mysql的鎖世界~

 

最左邊的杯子的左邊,最右邊的杯子的右邊,仍然是空地。

迷失在Mysql的鎖世界~

 

對於章魚來說,除了喝飲料的觸手以外,有時候它們會有一些多餘的觸手,它們會在`喝飲料的時候`把多餘的觸手放到杯子間的空地上休息。

迷失在Mysql的鎖世界~

 

因為空地上啥都沒有,在空地上的觸手不用搶著喝飲料,所以在空地上紅綠顏色的觸手可以和平共處。

迷失在Mysql的鎖世界~

 

但是人類並不稱呼【空地】為【空地】,

人類稱呼【空地】為 【記錄間的間隙】;

人類也不稱呼那些【在空地上的觸手】為【空地上的觸手】,

人類稱呼【在空地上的觸手】為【間隙鎖】;

如果一隻章魚把一隻觸手伸進了一杯飲料吮吸,恰巧把另一隻觸手放在緊挨該飲料的左邊休息,那麼人類會稱呼這兩隻觸手為一個【臨鍵鎖】。

4.黑觸手

這個世界存在另一種紅章魚,這種紅章魚的觸手是黑色的。

迷失在Mysql的鎖世界~

 

黑色的觸手跟紅綠顏色的觸手都不同,黑色的觸手沒辦法吸食飲料。

但是黑觸手有一個逆天的功能,就是當黑觸手接觸空地時,在接觸點會憑空生成一杯飲料出來!

迷失在Mysql的鎖世界~

 

因為黑觸手可以創造出章魚愛喝的飲料,所以其它章魚對黑觸手奉若神明,當黑觸手接觸到空地後,其它觸手不會過來打擾。

黑觸手只會降落在沒有其它觸手的空地。

迷失在Mysql的鎖世界~

 

一隻有黑觸手的紅章魚,可以在同一片空地上放下多隻觸手(如果空間足夠)。

迷失在Mysql的鎖世界~

 

也可以在不同的空地同時放下多隻觸手。

迷失在Mysql的鎖世界~

 

但是人類並不稱呼【落在空地上的黑觸手】為【落在空地上的黑觸手】,

人類稱呼【落在空地上的黑觸手】為【意向插入鎖】,並且認為它是【間隙鎖】的一種。

5.鐳射

下圖是一條紅色的鐳射,橫在了所有杯子上方。

迷失在Mysql的鎖世界~

 

紅鐳射十分灼熱,紅章魚和綠章魚碰到紅鐳射就會被燒傷,所以紅鐳射存在的時候,章魚們就在上方盤旋不敢下來。

另一方面,沒有任何觸手在飲料杯或空地上時,紅鐳射才有可能出現。

迷失在Mysql的鎖世界~

 

這是綠色的鐳射。

迷失在Mysql的鎖世界~

 

綠鐳射比較柔和,綠色的東西能夠無傷的穿過綠鐳射,所以綠章魚不受綠鐳射的影響。

迷失在Mysql的鎖世界~

 

事實上,綠鐳射可以同時出現多條,而紅鐳射最多出現一條,且紅綠鐳射不會同時存在。

迷失在Mysql的鎖世界~

 

但是人類不稱呼【紅鐳射】為【紅鐳射】,人類稱呼【紅鐳射】為【排它表鎖】。

人類也不稱呼【綠鐳射】為【綠鐳射】,而是稱呼【綠鐳射】為【共享表鎖】。

 

[參考] 15.7 InnoDB Locking and Transaction Model

 

 

相關文章