1.飲料
這是一杯飲料。
這是3杯飲料,每杯飲料的味道各不相同。
但是人類並不稱呼【飲料】為【飲料】,而是稱呼【飲料】為【記錄】。
2.紅章魚
這個紅色的,長的像章魚?的傢伙,我們就叫它紅章魚~
紅章魚分為頭部和觸手兩個部分。
紅章魚有觸手,且可以有任意根觸手。
紅章魚愛喝飲料,把觸手伸進杯子就能吸到飲料。
紅章魚將不同的觸手伸進不同的杯子,就可以同時喝多杯飲料。
多隻紅章魚可以同時出現。
但是正在喝飲料的紅觸手會排斥其它觸手,即一杯飲料裡最多隻能有一隻紅觸手。
同一杯飲料可以有多隻紅章魚在按序排隊等待。
紅章魚痴迷同時吸吮多杯飲料的感覺,所以它的所有觸手要麼全在等待,要麼全在喝飲料。
也就是說,如果紅章魚的某隻觸手在排隊,那麼它的其它觸手也必須排隊,即使是沒人喝的飲料也要排隊。
有觸手排隊但是沒觸手伸進去喝的飲料,仍然可以被後來的其它章魚喝。
但是人類並不稱呼【紅章魚】為【紅章魚】。
人類稱呼【紅章魚的頭部】為【意向排它鎖】;
人類稱呼【正在喝飲料的紅觸手】為【排它記錄鎖】。
3.綠章魚
這些是綠章魚。
綠章魚的絕大多數特性和紅章魚完全相同,除了一點:綠章魚的觸手願意跟其它綠色觸手一起分享飲料。
因為紅章魚不會向其它任何顏色的章魚分享飲料,且綠章魚只會向綠章魚分享飲料,
根據以上規則,紅章魚和綠章魚可以組成很多狀態。下面就是一種,編號表示他們來的順序。
但是人類並不稱呼【綠章魚】為【綠章魚】,
人類稱呼【綠章魚的頭部】為【意向共享鎖】;
人類稱呼【正在喝飲料的綠觸手】為【共享記錄鎖】。
4.空地
事實上,飲料杯未必都是相鄰的,它們之間可能有空地。
無論兩個飲料杯相隔多遠,它們之間如果沒有其它飲料杯,那我們就說這兩個飲料杯之間是同一塊空地。
最左邊的杯子的左邊,最右邊的杯子的右邊,仍然是空地。
對於章魚來說,除了喝飲料的觸手以外,有時候它們會有一些多餘的觸手,它們會在`喝飲料的時候`把多餘的觸手放到杯子間的空地上休息。
因為空地上啥都沒有,在空地上的觸手不用搶著喝飲料,所以在空地上紅綠顏色的觸手可以和平共處。
但是人類並不稱呼【空地】為【空地】,
人類稱呼【空地】為 【記錄間的間隙】;
人類也不稱呼那些【在空地上的觸手】為【空地上的觸手】,
人類稱呼【在空地上的觸手】為【間隙鎖】;
如果一隻章魚把一隻觸手伸進了一杯飲料吮吸,恰巧把另一隻觸手放在緊挨該飲料的左邊休息,那麼人類會稱呼這兩隻觸手為一個【臨鍵鎖】。
4.黑觸手
這個世界存在另一種紅章魚,這種紅章魚的觸手是黑色的。
黑色的觸手跟紅綠顏色的觸手都不同,黑色的觸手沒辦法吸食飲料。
但是黑觸手有一個逆天的功能,就是當黑觸手接觸空地時,在接觸點會憑空生成一杯飲料出來!
因為黑觸手可以創造出章魚愛喝的飲料,所以其它章魚對黑觸手奉若神明,當黑觸手接觸到空地後,其它觸手不會過來打擾。
黑觸手只會降落在沒有其它觸手的空地。
一隻有黑觸手的紅章魚,可以在同一片空地上放下多隻觸手(如果空間足夠)。
也可以在不同的空地同時放下多隻觸手。
但是人類並不稱呼【落在空地上的黑觸手】為【落在空地上的黑觸手】,
人類稱呼【落在空地上的黑觸手】為【意向插入鎖】,並且認為它是【間隙鎖】的一種。
5.鐳射
下圖是一條紅色的鐳射,橫在了所有杯子上方。
紅鐳射十分灼熱,紅章魚和綠章魚碰到紅鐳射就會被燒傷,所以紅鐳射存在的時候,章魚們就在上方盤旋不敢下來。
另一方面,沒有任何觸手在飲料杯或空地上時,紅鐳射才有可能出現。
這是綠色的鐳射。
綠鐳射比較柔和,綠色的東西能夠無傷的穿過綠鐳射,所以綠章魚不受綠鐳射的影響。
事實上,綠鐳射可以同時出現多條,而紅鐳射最多出現一條,且紅綠鐳射不會同時存在。
但是人類不稱呼【紅鐳射】為【紅鐳射】,人類稱呼【紅鐳射】為【排它表鎖】。
人類也不稱呼【綠鐳射】為【綠鐳射】,而是稱呼【綠鐳射】為【共享表鎖】。
[參考] 15.7 InnoDB Locking and Transaction Model