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

Apakah komit eksplisit baik-baik saja ketika komit otomatis aktif?

Melakukan di dalam satu lingkaran umumnya merupakan ide yang buruk (begitu juga mengizinkan alat apa pun untuk secara otomatis melakukan).

Melakukan di dalam satu lingkaran membuatnya lebih sulit untuk menulis kode yang dapat dimulai ulang. Apa yang terjadi jika Anda menemukan kesalahan setelah 3 iterasi? Anda sekarang telah berhasil mengkomit hasil dari 2 UPDATE pernyataan. Agaknya, Anda perlu mencari tahu baris mana yang diperbarui dan menulis kode untuk membalikkan pembaruan atau Anda harus menambahkan kode yang menghindari upaya memperbarui data untuk dua yearid yang berhasil tersebut nilai-nilai. Itu pasti mungkin. Tetapi ini melibatkan penulisan banyak kode untuk melacak kemajuan Anda dan umumnya membuat kode Anda jauh lebih kompleks.

Melakukan di dalam satu lingkaran membuat kode Anda jauh lebih lambat. Melakukan umumnya merupakan operasi yang agak mahal. Oleh karena itu, melakukannya dalam satu lingkaran umumnya merupakan ide yang buruk. Ini bukan masalah jika Anda hanya memiliki beberapa lusin iterasi loop. Tetapi jika Anda memiliki ratusan atau ribuan iterasi, Anda dapat dengan mudah menghabiskan sebagian besar waktu Anda untuk berkomitmen.

Melakukan di dalam loop secara substansial meningkatkan risiko bahwa Anda akan menyebabkan kesalahan ORA-01555. Kueri Anda terhadap MyTable membutuhkan tampilan data yang konsisten untuk dibaca. Namun, jika Anda melakukan di dalam loop, Anda memberi tahu Oracle bahwa sesi Anda tidak lagi membutuhkan UNDO yang lebih lama data. Jika Oracle kebetulan membersihkan UNDO data yang Anda butuhkan untuk iterasi loop berikutnya, Anda akan mendapatkan kesalahan. Dan kemudian Anda kembali berurusan dengan kode yang tidak dapat dimulai ulang di mana Anda berhasil melewati N iterasi tetapi Anda tidak tahu tahun mana yang telah diproses atau yang perlu diproses.

Melakukan di dalam loop dapat membuat masalah konsistensi data. Jika beberapa sesi lain menjalankan laporan, misalnya, laporan tersebut mudah melihat data yang diperbarui sebagian yang sering kali berarti bahwa data tersebut tidak konsisten. Jika data selama 3 tahun telah berubah tetapi tahun lainnya tidak, akan sangat sulit untuk memahami laporan dan orang (atau proses) dapat dengan mudah membuat keputusan yang salah.

Melakukan di dalam satu lingkaran juga membuat kode Anda kurang dapat digunakan kembali. Jika kode Anda menyertakan commit (atau rollback selain ke savepoint yang Anda buat di dalam blok), kode tersebut tidak dapat dipanggil oleh bagian kode lain yang belum ingin transaksinya dilakukan. Hal itu membuat orang mencoba mengimplementasikan kembali logika Anda tanpa kontrol transaksi atau salah melanggar integritas transaksional yang tak terhindarkan membuat mereka membangun aplikasi yang menimbulkan masalah konsistensi 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. Bagaimana cara menambahkan ojdbc7 ke aplikasi web Java dengan Gradle?

  2. Apakah kursor database mengambil perubahan pada data yang mendasarinya?

  3. apakah ada fungsi PRODUCT seperti ada fungsi SUM di Oracle SQL?

  4. pilih saja dan hanya catatan tertentu di oracle

  5. Bagaimana cara memilih nama Node tertentu dan nilainya dalam XML menggunakan kueri Oracle SQL?