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

Memigrasikan Tabel Urutan MyISAM Spring Batch ke InnoDB

Saya mengkonfirmasi bahwa hanya mengubah tabel urutan MyISAM ke InnoDB menyebabkan kunci pembaruan dibuat pada tabel urutan setelah update...set...=last_insert_id() pernyataan tetapi sebelum transaksi telah dilakukan. Kunci ini tidak dibuat saat menggunakan urutan MyISAM. Jadi pendekatan "mudah" dapat berdampak negatif pada kinerja.

Inilah yang saya dapatkan. Tidak yakin bahwa ini adalah cara termudah, tetapi berhasil.

  1. Per ini jawab, jatuhkan tabel urutan yang ada dan definisikan ulang dengan satu kolom uid BIGINT(20) UNSIGNED NOT NULL PRIMARY KEY auto_increment
  2. Buat prosedur tersimpan yang:a) mengambil nama urutan sebagai argumen, b) memasukkan ke dalam urutan, dan c) mengembalikan LAST_INSERT_ID()
  3. Tulis kelas java yang memperluas MySQLMaxValueIncrementer dan memanggil prosedur tersimpan di getNextKey() metode. Saya menggunakan SimpleJdbcCall contoh untuk melakukan ini.
  4. Tulis kelas java yang mengimplementasikan DataFieldMaxValueIncrementerFactory dan mengembalikan sebuah instance dari langkah #3 dari getIncrementer() metode
  5. Dalam konfigurasi batch, perbarui org.springframework.batch.core.repository.support.JobRepositoryFactoryBean konfigurasi untuk menggunakan pabrik penambah dari langkah #4



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bergabung dengan tabel yang berbeda berdasarkan nilai kolom

  2. Simpan data ke mysql dari Hive hadoop melalui sqoop?

  3. mysqli beberapa kueri - set variabel menghasilkan kesalahan boolean/bagaimana cara melewati ini?

  4. SQL:Bergabung pada dua tabel di mana pada kolom adalah nol

  5. MySQL menyalin pengguna