Paketlerin bağımsız prosedürler ve işlevlere göre faydaları nelerdir?


13

Tek başına yordamlar ve işlevler yerine Oracle veritabanında paketlerin neden tercih edilmesi gerektiği sorusuna standart bir cevap bulmak.

Yanıtlar:


12

Paketlerin Faydaları

Mantıksal Gruplama - Birlikte çalışan yöntemler, mantıksal olarak birleşmek yerine fiziksel olarak ayrı olmaktan ziyade uyumlu bir birime konabilir.

Güvenli Özel Yöntemler - İşlevler ve Prosedürler pakete özel yapılabilir ve sadece içinde kullanılabilir. Bu, kamusal yüzeyi daha basit ve daha güvenli hale getirir.

Ayrıcalık Yönetimi - İzin verilen her yordam / işlev için ayrı ayrı değil, birlikte çalışan bir grup yordam için izinler bir kez verilebilir.

Güvenli Sarma - Sarılı paketlerin sarılması, sarılmış işlevlerden / yordamlardan daha zordur.

Basitleştirilmiş Adlandırma - Daha büyük bir ad alanı, daha basit olan ve diğer paketlerde yeniden kullanılabilen adlara izin verir.

Daha İyi Performans - Paketler derlenebilir ve diğer yöntemler gibi parça parça yerine bütünüyle belleğe yüklenebilir. Varsa bu fayda, diğer faydalara göre asgari düzeydedir.

Azaltılmış Geçersiz Kılma - Bir paket gövdesinin değiştirilmesi, bir işlevi veya yordamı değiştirmek gibi bağımlılıkları geçersiz kılmaz.

Benzersiz Özellikler - Paket Değişkenleri, Paket Sabitleri, Başlatma, Oturum Durumu, Paket Yorumları ve Aşırı Yüklenmiş Yöntemler.

Referanslar:
11.2 Kavramlar Kılavuzu
Tom'a Soru Sor
StackOverflow.com Paket Performansı Hakkında Soru Açma
PL / SQL Sunumu (pdf)


2
Performans avantajına katılmıyorum. Kodu belleğe yüklemek kayda değer bir bekleme olayı ise, çok kötü bir şey oldu. Ve paketlerin performansı düşürme olasılığı güçlüdür, çünkü sadece tek bir yönteme gerçekten ihtiyaç duyduğunuzda paketin tamamını yüklediğinizde daha fazla kod okumalısınız. Her iki durumda da, performans farkı ölçülemez.
Justin Cave

@Justin - Bu nokta 11.2 Kavramlar Kılavuzu'ndan alınmıştır. İşte söylediği: "Daha iyi performans - Paketteki bir prosedür ilk kez çağrıldığında paketin tamamı küçük parçalar halinde belleğe yüklenir. Bu yük, bağımsız olarak gereken ayrı yüklerin aksine tek bir işlemle tamamlanır İlgili paketlenmiş yordamlara çağrı yapıldığında, derlenen kodu bellekte çalıştırmak için disk G / Ç'ye gerek yoktur. "
Leigh Riffel

4
Belgelerin bir performans avantajı olduğunu iddia ettiğini kabul ediyorum. Dokümantasyon yanlış veya en azından yetersiz. En iyi durum, "fayda" nın büyüklüğü miniktir. Ve yararın işareti bilinmiyor. Satırların çoğunu okuyorsanız tablo taramasının daha verimli olması ve tek bir satırı okuyorsanız dizin erişiminin daha verimli olması gibi, tek seferde bir paketin tamamını belleğe okumak da sadece tek bir yöntem istiyorsanız her yöntemi kullanın ve dezavantajlı.
Justin Cave

1
@Justin - Değerlendirmeniz mantıklı geliyor. Öyle ya da böyle kesin bir şey bulamadım, bu yüzden cevaptaki noktaya bir uyarı ekledim. Giriş için teşekkürler.
Leigh Riffel

Bence bu performans avantajı önbelleklemeye benzer. Yalnızca bu yordamı kullanırsanız ve daha az sıklıkta kullanırsanız, herhangi bir performans avantajı elde edemezsiniz. Ancak sık sık kullanırsanız ve bu pakette başka bir prosedür kullanılırsa fayda elde edersiniz. Her yerde geliştirici önbellek kullanıyor, çünkü gerçek performans değil, algılanan performans geliştirildi. İlgili prosedürler aynı pakete konduğundan, diğer bazı prosedürlerin de çağrılması mantıklıdır. Bu tamamen aynı pakette iki prosedür çağırma olasılığı ile ilgilidir. Ve normalde, yüksek olasılıkla okuyun, ortaya çıkar.
Atilla Özgür
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.