Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

pertikaian baris oracle menyebabkan kesalahan kebuntuan dalam aplikasi JMS throughput tinggi

Kebuntuan menyiratkan bahwa setiap utas mencoba memperbarui beberapa baris dalam satu transaksi dan bahwa pembaruan tersebut dilakukan dalam urutan yang berbeda di seluruh utas. Oleh karena itu, jawaban paling sederhana yang mungkin adalah memodifikasi kode sehingga pesan dalam transaksi yang sama diterapkan dalam beberapa urutan yang ditentukan (yaitu dalam urutan kunci utama). Itu akan memastikan bahwa Anda tidak akan pernah menemui jalan buntu meskipun Anda masih akan mendapatkan kunci pemblokiran sementara satu utas menunggu utas lain untuk melakukan transaksinya.

Mengambil langkah mundur, tampaknya tidak mungkin Anda benar-benar ingin banyak utas memperbarui baris yang sama dalam sebuah tabel ketika Anda tidak dapat memprediksi urutan pembaruan. Tampaknya sangat mungkin itu akan menyebabkan banyak pembaruan yang hilang dan beberapa perilaku yang agak tidak terduga. Apa tepatnya yang dilakukan aplikasi Anda yang membuat hal semacam ini masuk akal? Apakah Anda melakukan sesuatu seperti memperbarui tabel agregat setelah memasukkan baris ke dalam tabel detail (yaitu memperbarui jumlah tampilan yang dimiliki sebuah pos selain mencatat informasi tentang tampilan tertentu)? Jika demikian, apakah operasi tersebut benar-benar perlu disinkronkan? Atau bisakah Anda memperbarui jumlah penayangan secara berkala di utas lain dengan menggabungkan penayangan selama N detik terakhir?



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle - Tentukan ukuran maksimum yang didukung untuk ekspresi reguler

  2. Pemetaan MyBatis untuk mengambil Daftar Jenis Catatan Kustom di Oracle

  3. Memiliki Output PL/SQL secara Real Time

  4. Tidak dapat membaca tabel SQL dengan benar di python:kolom varchar diimpor sebagai karakter/tupel yang dipisahkan koma

  5. Perbedaan Oracle SQL:COUNT(*) vs Kumpulan Hasil Aktual