Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Mengapa peningkatan otomatis MySQL meningkat pada sisipan yang gagal?

InnoDB adalah mesin transaksi.

Ini berarti bahwa dalam skenario berikut:

  1. Session A menyisipkan catatan 1
  2. Session B menyisipkan catatan 2
  3. Session A memutar kembali

, ada kemungkinan celah atau session B akan mengunci sampai session A dilakukan atau dibatalkan.

InnoDB desainer (seperti kebanyakan desainer mesin transaksional lainnya) memilih untuk membiarkan celah.

Dari dokumentasi :

Saat mengakses penghitung kenaikan otomatis, InnoDB menggunakan AUTO-INC tingkat tabel khusus kunci yang disimpannya hingga akhir SQL saat ini pernyataan, bukan sampai akhir transaksi. Strategi pelepasan kunci khusus diperkenalkan untuk meningkatkan konkurensi untuk penyisipan ke dalam tabel yang berisi AUTO_INCREMENT kolom

InnoDB menggunakan penghitung kenaikan otomatis dalam memori selama server berjalan. Saat server dihentikan dan dihidupkan ulang, InnoDB menginisialisasi ulang penghitung untuk setiap tabel untuk INSERT first pertama ke tabel, seperti yang dijelaskan sebelumnya.

Jika Anda takut dengan id kolom melilit, menjadikannya BIGINT (panjang 8 byte).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tip Singkat MySQL:Menggunakan Fungsi LENGTH dan TRIM

  2. Cegah kenaikan otomatis pada sisipan duplikat MySQL

  3. JSON_VALUE() di MySQL

  4. MySQL SELECT LIKE atau REGEXP untuk mencocokkan beberapa kata dalam satu catatan

  5. node.js async/menunggu menggunakan dengan MySQL