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

Menangani transaksi di lingkungan multithreaded

Saya akan menyarankan untuk mengantri semua tindakan SQL dari beberapa utas di beberapa struktur data perantara, dan kemudian dimasukkan ke dalam database dari satu utas. Dimungkinkan untuk memiliki struktur perantara yang aman untuk utas seperti ConcurrentHashMap , ConcurrentLinkedQueue atau Anda dapat menyinkronkannya saat bekerja dengannya.

Dengan cara ini Anda bahkan tidak perlu memulai transaksi terlebih dahulu. Data yang tertunda mungkin kurang aman, tetapi saya berasumsi bahwa data tersebut tidak jauh lebih aman di database saat transaksi belum dilakukan.

Tentu saja, ini hanya dapat berfungsi jika Anda tidak memiliki select pernyataan memilih data transaksi yang tidak terikat dari transaksi yang sama. Menyingkirkan kueri semacam itu dengan satu atau lain cara mungkin memerlukan desain ulang.

Gunakan CountDownLatch untuk mendeteksi ketika semua data sudah siap dan utas penulisan basis data harus memulai tindakannya. Jika tidak pernah terjadi, gunakan pola reaktor untuk utas penulisan basis data.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. GALAT:Galat 1005:Tidak dapat membuat tabel 'cat10e.recording' (errno:150)

  2. Membuat Aplikasi Web Dari Awal Menggunakan Python Flask dan MySQL:Bagian 3

  3. Butuh solusi praktis untuk membuat database pola (5-5-5) untuk 15-Puzzle

  4. Pilih bagian dari MySQL Blob Field

  5. Permintaan hasil pencarian berbasis lokasi yang lambat