Jika Anda menyetel tingkat isolasi transaksi ke SERIALIZABLE
, InnoDB
akan secara implisit menambahkan LOCK IN SHARE MODE
ke semua SELECT
pernyataan.
Mode ini bertentangan dengan kunci yang ditempatkan oleh SELECT FOR UPDATE
dan SELECT
s akan mengunci.
Namun, perhatikan bahwa InnoDB
mungkin mengunci lebih banyak baris daripada memenuhi WHERE
kondisi. Ini karena mengunci semua baris dipindai , bukan hanya yang cocok .
Katakanlah, Anda memiliki indeks di col1
dan kueri ini:
SELECT *
FROM mytable
WHERE col1 = 1
AND col2 = 2
FOR UPDATE
menggunakan indeks ini.
Ini akan mengunci semua catatan dengan col1 = 1
, bahkan mereka yang memiliki col2 <> 2