Awr raporunu aldığımda, çok yavaş olan ve yürütülmesi uzun süren bir saklı yordam olduğunu fark ettim, bu yüzden bunu test ortamında simüle ettim ve optimizasyon yoluma başladım .. Genel optimizasyon adımlarımı ve optimizasyondan sonraki etkiyi yazın.
Awr raporu aracılığıyla bu sorunlu saklı yordamı bulun.
Hata ayıklamadan sonraki analiz yaklaşık 42 saniye sürer.
Büyüklük sırası 1.44 milyon
Tablo aşağıdaki gibi tanımlanmıştır:
Güncelleme kısmı zaman aldığından, dizinin alınıp alınmadığını görmek için yeniden yazmayı düşünün.
Güncelleme süresini seçin, Tab_TempDriverScan'den tootm gönderin burada ScanWay = '1' ve GönderiNumarası = v_shipmentnumber ve LPN = idx.LPN ve SKU = idx.SKU;Burada indeks aralığı taraması kullanılır, bir sonraki adıma geçin.
12 saniye azaldı, ancak yine de ideal değil.
Aşağıdaki gibi yeniden yazdıktan sonra
Çekirdek komut dosyası:
TYPE Tab_TempDriverScan_rec_type IS RECORD - Kayıt türünü belirtin ( v_shipmentnumber Tab_TempDriverScan.shipmentnumber% TYPE, v_power_unit Tab_TempDriverScan.power_unit% TYPE, v_IsSend Tab_TempDriverScan.IsSend% TYPE); TYPE nested_Tab_TempDriverScan_type IS TABLE OF Tab_TempDriverScan_rec_type; - kayıt türü değişkenini bildirin Tab_TempDriverScan_tab nested_Tab_TempDriverScan_type; ................... DÖNGÜ başlık1 getir BULK COLLECT Tab_TempDriverScan_tab'a; --Yığın toplama uygula EXIT WHEN header1% NOTFOUND; ........................test analizi
Şu anda yalnızca 0,06 saniye sürüyor ve performans büyük ölçüde iyileştirildi Bu noktada, yalnızca aşağıdaki üretim testi doğrulama bağlantısı var ve bu adım yok sayılıyor.
Veritabanı optimizasyonu sonsuzdur. Aslında, buradaki temel amaç, depolanan prosedürü 42 saniyeden 0.06 saniyeye kadar optimize etmek için toplu toplama uygulamaktır.Gerekirse, daha fazla optimize etmek için forall kullanabilirsiniz. Süre sınırlıdır, bu yüzden devam etmeyeceğiz. Eğer ilgileniyorsanız, çalışabilirsiniz. Daha fazla optimizasyon içeriği daha sonra paylaşılacak, ilgilenen arkadaşlar takip edebilir!