Her şeyde olduğu gibi, duruma göre değişir.
OCI kullanıyorsanız, bir istemci / sunucu uygulaması geliştirdiğinizi varsayalım. Genellikle bu durumda veritabanının paylaşılan sunucu bağlantılarını desteklemesini isterim ve uygulama veritabanına bağlandığında paylaşılan bir sunucu bağlantısı istemek isterim. Bu, veritabanının yeni bir oturum oluşturmak için yapması gereken işi sınırlandırarak uygulamanın performansını artırır. Bunun, başkaları için sunucuda daha fazla kaynak bulundurması yan etkisi vardır. Paylaşılan sunucu bağlantılarının kullanılması, sorgunun paylaşılan bir sunucu işlemine gönderilmesi gerektiğinden, veritabanı sonraki sorguları yürütürken daha uzun bir kod yolunu içerir, ancak paylaşılan sunucu işlemlerinin sayısı makulse bu genellikle önemli değildir.
DBA otomatik PGA yönetimi kullanmıyorsa, birkaç oturum açmak da sorun olabilir. Manuel PGA yönetimi kullanıyorsanız, her oturum SORT_AREA_SIZE
diğer PGA bileşenleri arasında ayrı ayrı ayrılabilmesi için PGA oturum başına esasına göre yapılandırılır . Manuel PGA yönetimini kullanarak bir veritabanında çok sayıda oturum oluşturduysanız ve her oturum PGA kullanımını en üst düzeye çıkarmaya çalıştıysa, RAM sunucusunu kolayca aç bırakabilir ve herkes için performans sorunlarına neden olabilirsiniz. Ancak Oracle 10.1 veya üstünü kullandığınızı varsayarsak, otomatik PGA yönetimi kullanılabilir. Bu durumda, DBA bir a yapılandırır PGA_AGGREGATE_TARGET
(veya MEMORY_TARGET
11g'de PGA'yı içerir) ve veritabanı, tüm kaynaklardaki toplam PGA'nın sınırlı olmasını sağlayarak veritabanının kaynakların tükenmesini sağlar.
Veritabanı paylaşılan sunucu bağlantılarını destekliyorsa, uygulamanız paylaşılan bir sunucu bağlantısı alır ve veritabanı otomatik PGA yönetimi kullanırsa, çoğu DBA, kaç oturum oluşturduğunuzla pek ilgilenmez.
Şimdi, paralel olarak daha fazla iş yapabilmeniz için çok sayıda oturum oluşturuyorsanız, oturum sayısının üzerinde ve üstünde performans sorunları yaratacaktır. Veritabanını 1000 oturumu destekleyecek şekilde yapılandırmak yeterince kolaydır, örneğin, 1000 oturumun tümü aynı anda bir veri ambarına karşı etli bir sorgu yayınlarsa, veritabanını bir yığın içinde ölmeyecek şekilde yapılandırmak çok daha zordur. Uygulamanız sorgularınız için veritabanında kullanılabilir olan tüm kaynakları kullanıyorsa, DBA muhtemelen Oracle Resource Manager'ı kullanmayı düşünecektirfarklı uygulamalara ve / veya farklı kullanıcılara öncelik vermek. Örneğin, DBA Kaynak Yöneticisi'ni yapılandırabilir, böylece CPU kullanımı% 100'e ulaşırsa, toplamdaki uygulamanız CPU'nun% 50'sini alır, toplamdaki diğer bazı uygulamalar% 25'i alır ve diğerleri kalan% 25'i alır . Bekleyen başka bir istek olmasaydı, uygulamanız CPU'nun% 100'ünün tümünü kullanmakta serbest olurdu.
Bir şeyleri paralel olarak çalıştırıyorsanız, Oracle'ın deyimleri paralel olarak çalıştırma yeteneğini araştırmak da yararlı olabilir, çünkü bu kendi paralelleştirme kodunuzu yazmaktan daha az ek yük içerebilir. Örneğin, birden çok oturum açmak ve uygulamanızın ayrı bir iş parçacığından her ifadeyi yürütmek yerine Oracle paralel sorguyu kullanan ifadeleri seri olarak gönderen bir istemci uygulaması yazmak çok daha kolay ve muhtemelen daha hızlı olacağını umuyorum. Oracle, ifadelerin hiçbirini yürütmek için paralel sorgu kullanmıyordu. Paralel sorgu kullanırsanız, veritabanı, ortaya çıkan paralel slave sayısını da ayarlayabilir, böylece veritabanı özellikle meşgul olduğunda daha az paralel slave başlatılır ve veritabanı nispeten boşta olduğunda daha paralel slave başlatılır.