Bir uygulama ne zaman çok fazla oturum kullanıyor?


9

Oracle ile iletişim kurmak için OCI kullanan bir istemci-sunucu uygulaması üzerinde çalışıyorum. Geçmişte, uygulamamız oturumları genellikle sonsuz bir kaynak olarak, muhtemelen o Oracle sunucusunu paylaşan diğer uygulamaların zararına muamele ediyordu.

Geliştiricilerimi, uygulamamızın başkalarıyla iyi oynamasının ve böyle bir kaynak domuzu olmamasının önemli olduğuna ikna etmeye çalışıyorum.

Oracle DBA'ların hangi noktada oturumları aşırı derecede kullandığını (veya kötüye kullandığını) düşünürdünüz?

DÜZENLEME: Şu anda oturumların en büyük tüketicilerinden biri, birkaç (20-30) tabloyu paralel olarak toplu yüklemek için doğrudan yol yüklemeyi kullanan bu bileşendir.

Yanıtlar:


10

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_SIZEdiğ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_TARGET11g'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.

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.