INSERT ... ON DUPLICATE KEY UPDATE
dideskripsikan sebagai "sisipan mode campuran" untuk tujuan AUTO_INCREMENT
InnoDB penanganan. Sisipan mode campuran pada dasarnya adalah penyisipan di mana maksimum jumlah AUTO_INCREMENT
yang diperlukan nilainya diketahui, tetapi jumlah yang benar-benar dibutuhkan tidak.
Sisipan mode campuran ditangani secara khusus secara default, seperti yang dijelaskan dalam dokumen MySQL :
Jika Anda menggunakan InnoDB, alternatif Anda adalah:
- Hindari
INSERT ... ON DUPLICATE KEY UPDATE
. - Setel
innodb_autoinc_lock_mode
parameter ke0
, untuk mode kunci peningkatan otomatis "tradisional", yang menjamin bahwa semuaINSERT
pernyataan akan menetapkan nilai berurutan untukAUTO_INCREMENT
kolom. Namun, ini dilakukan dengan mengunci selama pernyataan, jadi ada penurunan performa yang terkait dengan setelan ini. - (Disarankan) Abaikan celah di
AUTO_INCREMENT
kolom.
Catatan:AUTO_INCREMENT
penanganannya benar-benar berbeda di bawah MyISAM, yang tidak menunjukkan perilaku ini.