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

Mengapa mysql melewatkan beberapa id kenaikan otomatis?

Ini adalah contoh penguncian kenaikan otomatis di InnoDB:Saat Anda menjalankan 2 pernyataan secara bersamaan di sesi yang sama:kunci inc otomatis diperoleh dengan kueri pertama, dan pembuatan nilai kenaikan otomatis tidak disisipkan di antara pernyataan - itulah intinya transaksi.

Ini akan selalu terjadi secara terencana:Jika tidak, cara kerja transaksi di InnoDB, yah, tidak akan berhasil. Skalabilitas di bawah beban jenis OLTP akan mengerikan karena setiap sisipan harus menunggu setiap sisipan lainnya selesai, dikomit, atau lebih buruk lagi - digulung kembali.

Yaitu:Jika penyisipan pertama Anda berjalan 5x lebih lama dari yang kedua, dan gagal dan dibatalkan, yang kedua masih selesai dan telah dilakukan. Jika tidak, Anda harus menunggu ea. kueri untuk diselesaikan setelah yang lain.

Jika Anda memerlukan ID # yang berurutan dan benar-benar unik, tarik dari sumber lain. Kolom AutoInc hanya menjamin nilai unik - tidak harus monosequence - yang merupakan titik serialisasi dan hambatan.

Salah satu cara mengatasinya jika diperlukan:

atur innodb_autoinc_lock_mode = 0 di my.cnf/mysql.ini

. Anda

Deskripsi penguncian inc otomatis di InnoDB dan Opsi



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Memilih nilai yang paling umum dari relasi - pernyataan SQL

  2. Apakah ini polling panjang yang sebenarnya?

  3. Cara menginstal MySQL di macOS

  4. Mana yang lebih cepat:beberapa INSERT tunggal atau satu INSERT beberapa baris?

  5. Tidak dapat menghentikan MySQL di OS X 10.10