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

MariaDB - INNODB melewatkan urutan angka sambil membuat catatan tambahan - mengapa?

Mekanisme auto_increment diperlukan untuk menghasilkan unik nilai, yang lebih besar dari nilai apa pun yang telah dihasilkan sebelumnya. Itu tidak menjamin untuk menghasilkan berturut-turut nilai.

Ada beberapa diskusi tentangnya di sini:https://bugs.mysql.com/bug. php?id=57643

Ada sedikit kepentingan dalam menghasilkan nilai berurutan dengan setia, karena nilai apa pun bisa "hilang" karena alasan lain:

  • MASUKKAN Anda gagal, misalnya karena melanggar batasan seperti KUNCI UNIK atau KUNCI ASING.
  • Anda mengembalikan transaksi untuk INSERT Anda.
  • Anda berhasil dan komit, tetapi kemudian baris tersebut DIHAPUS oleh Anda atau sesi lain.

Nilai penyertaan otomatis tidak dikembalikan ke antrean apa pun, karena sesi serentak lainnya mungkin telah menghasilkan nilai id lebih lanjut untuk sementara. Tidaklah layak InnoDB mempertahankan kumpulan nilai id yang tidak terisi, karena kumpulan itu bisa menjadi besar dan boros.

Juga, mungkin tepat untuk "kehilangan" nilai ID, atau seseorang akan berpikir bahwa baris yang mereka maksud untuk DELETE entah bagaimana kembali.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara mendapatkan maksimal dua nilai di MySQL?

  2. CannotAcquireLockException (Musim Semi, Hibernasi, MySQL)

  3. Entri duplikat untuk kunci 'PRIMARY'. Mengabaikan spasi untuk string

  4. tabel MySql ke dalam format JSON

  5. Cara paling efisien untuk mengkloning database AWS RDS?