ネクストキーロック

centos7のMySQLの5.7.27に、デフォルトのトランザクション分離レベルは、ネクストキーロックデフォルトを使用して、反復読み出されます。 

それはより大きいか、それを照会以上であれば、私は、情報や記事の多くは唯一のため、状況の更新ロックプラスXと同等のクエリを説明している参照してください?

ここでは、次のキー・ロックのいくつかの理解は、私がコンセプトの、あまりにも多くのことを書いていない理解することは困難です。 

作成する テーブルのn(整数、bはVARCHAR10)のC INTプライマリ キー(a)は、キーの(c)); 
、 '1'、1を選択し、Nに挿入1。
N 10、 '10'、10を選択して挿入。
N 20、 '20'、20を選択して挿入。
N 30、 '30'、30を選択して挿入。
N 50、 '50'、50を選択して挿入。

自動コミットは、接続レベルの変数でデフォルトでオンになっています:

それを先送りにします:

設定 @@自動コミット= 0。

 

 

次の文は[30、+無限大)をロックします。

選択 Cをから N ここで C > 30  のための 更新

 

次の文は、ロックします[20、30]と[30、+無限大)、実際には、[20、+無限大):

選択 Cをから N ここで C > = 30  のための アップデート

実際には、30自体を含む、無限に+ 30〜30のインデックス値をロックする前に。

これらのロックは、インデックスcに、Cのインデックスは、一般的なインデックスc列に基づいているの繰り返しが可能。

上記。

 

おすすめ

転載: www.cnblogs.com/lihan829/p/11374613.html