centos7のMySQLの5.7.27に、デフォルトのトランザクション分離レベルは、ネクストキーロックデフォルトを使用して、反復読み出されます。
それはより大きいか、それを照会以上であれば、私は、情報や記事の多くは唯一のため、状況の更新ロックプラスXと同等のクエリを説明している参照してください?
ここでは、次のキー・ロックのいくつかの理解は、私がコンセプトの、あまりにも多くのことを書いていない理解することは困難です。
作成する テーブルのn(整数、bはVARCHAR(10)の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列に基づいているの繰り返しが可能。
上記。