Terlambat, saya telah menghadapi banyak pertengkaran kunci baris. Tabel dalam pertengkaran tampaknya merupakan tabel tertentu.
Inilah yang biasanya terjadi -
- Pengembang 1 memulai transaksi dari layar ujung depan Oracle Forms
- Pengembang 2 memulai transaksi lain, dari sesi berbeda menggunakan layar yang sama
~ 5 menit, ujung depan tampaknya tidak responsif. Memeriksa sesi menunjukkan pertentangan kunci baris. "Solusi" yang dilemparkan semua orang adalah dengan mematikan sesi: /
Sebagai pengembang basis data
- Apa yang bisa dilakukan untuk menghilangkan pertikaian kunci baris?
- Apakah mungkin untuk mengetahui baris mana dari prosedur tersimpan yang menyebabkan pertikaian kunci baris ini
- Apa yang akan menjadi pedoman umum untuk mengurangi / menghindari / menghilangkan masalah seperti pengkodean itu?
Jika pertanyaan ini terasa terlalu terbuka / informasi tidak cukup, silakan mengedit / beri tahu - Saya akan melakukan yang terbaik untuk menambahkan beberapa informasi tambahan.
Tabel yang dimaksud adalah di bawah banyak sisipan dan pembaruan, saya akan mengatakan itu salah satu tabel yang paling sibuk. SP cukup kompleks - untuk menyederhanakan - mengambil data dari berbagai tabel, mengisinya ke dalam tabel kerja, banyak operasi aritmatika terjadi di meja kerja dan hasil dari tabel kerja dimasukkan / diperbarui ke dalam tabel yang dimaksud.
Versi database adalah Oracle Database 10g Edisi Enterprise Release 10.2.0.1.0 - 64bit. Alur logika dijalankan dalam urutan yang sama di kedua sesi, transaksi tidak dibuka terlalu lama (atau setidaknya saya pikir begitu), dan kunci terjadi selama eksekusi aktif transaksi.
Pembaruan: Jumlah baris tabel lebih besar dari yang saya harapkan, sekitar 3,1 juta baris. Juga, setelah menelusuri sesi saya menemukan bahwa beberapa pernyataan pembaruan untuk tabel ini tidak menggunakan indeks. Kenapa begitu - saya tidak yakin. Kolom direferensikan di mana klausa diindeks. Saat ini saya sedang membangun kembali indeks.
COMMIT
atau ROLLBACK
dalam waktu yang wajar atau b) mengatur sedemikian rupa sehingga orang yang sama tidak selalu menginginkan baris yang sama pada waktu yang sama.