Geç saatlerde, çok sayıda satır kilidi içeriğiyle karşılaştım. Çekişmeli tablo belirli bir tablo gibi görünüyor.
Genellikle olan budur -
- Geliştirici 1, Oracle Forms kullanıcı arabirimi ekranından bir işlem başlatır
- Geliştirici 2, aynı ekranı kullanan farklı bir oturumdan başka bir işlem başlatır
~ 5 dakika içinde, ön uç yanıt vermiyor gibi görünüyor. Oturumları kontrol etmek satır kilidi çekişmesini gösterir. Herkesin attığı "çözüm" oturumları öldürmektir: /
Veritabanı geliştiricisi olarak
- Sıra kilidi içeriklerini ortadan kaldırmak için ne yapılabilir?
- Saklı yordamın hangi satırının bu satır kilidi içeriklerine neden olduğunu bulmak mümkün müdür?
- Kodlama gibi bu tür sorunları azaltmak / önlemek / ortadan kaldırmak için genel kılavuz nedir?
Bu soru çok açık uçlu / yetersiz bilgi veriyorsa lütfen düzenlemek / bildirmekten çekinmeyin - bazı ek bilgiler eklemek için elimden geleni yapacağım.
Söz konusu tablo çok fazla ek ve güncelleme altında, en yoğun tablolardan biri olduğunu söyleyebilirim. SP oldukça karmaşıktır - basitleştirmek için - çeşitli tablolardan veri alır, çalışma tablolarına doldurur, çalışma masasında çok sayıda aritmetik işlem gerçekleşir ve çalışma tablosunun sonucu söz konusu tabloya eklenir / güncellenir.
Veritabanı sürümü Oracle Database 10g Enterprise Edition Sürüm 10.2.0.1.0 - 64bit'tir. Mantık akışı her iki oturumda da aynı sırayla yürütülür, işlem çok uzun süre açık tutulmaz (veya en azından öyle düşünüyorum ) ve kilitler işlemlerin aktif yürütülmesi sırasında gerçekleşir.
Güncelleme: Tablo satırı sayısı yaklaşık 3,1 milyon satırda beklediğimden daha fazla. Ayrıca, bir oturumu izledikten sonra bu tablodaki güncelleme deyimlerinin birkaçının dizini kullanmadığını gördüm. Neden böyle - emin değilim. Where yan tümcesinde başvurulan sütun dizine eklenir. Şu anda dizini yeniden oluşturuyorum.
COMMIT
ya da ROLLBACK
makul bir zamanda ya da b) aynı kişilerin aynı anda her zaman aynı sırayı istemeyecek şekilde düzenlenmesi.