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

Bagaimana menangani transaksi besar di bawah Oracle?

Oracle membuat kursor untuk setiap resultset dan melepaskannya setelah menutup resultset (jdbc ResultSet.close() atau yang serupa). Default dari 50 kursor terbuka per sesi sudah cukup untuk aplikasi yang dirancang dengan baik (setelah saya mengukurnya, dan dalam mode produksi tidak pernah lebih dari 20).

Anda harus memeriksa cara membuat Hibernate untuk menutup hasil setelah mengambil. Secara umum, saya tidak dapat membayangkan sesi apa yang harus dilakukan jika itu benar-benar membutuhkan 1000 kursor terbuka. Saya tidak pernah melihat max_open_cursors lebih dari 1000 set, jadi, saya rasa, itu juga cukup untuk aplikasi yang dirancang dengan buruk (tapi... tidak ada batasan untuk kesempurnaan pada kenyataannya, dan saya tidak pernah menggunakan Hibernate).

Setiap kursor berarti beberapa memori, jadi meningkatkan max_open_cursors bukanlah solusi harga nol.



  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 Anda menetapkan hasil ekspresi ke variabel substitusi SQL?

  2. Oracle SQL - Bagaimana saya bisa memanggil fungsi pipelined ODCI menggunakan JSP

  3. Bagaimana cara menjatuhkan partisi dari tabel di beberapa skema?

  4. Mengapa Prosedur Tersimpan ini Memasukkan nilai NULL ke dalam tabel?

  5. Membuat Database Oracle 12c – Langkah demi langkah