Oracle veritabanı PGA'nın konseptini, bileşimini, otomatik yönetimini, parametrelerini ve görünümlerini açıklayın

Genel Bakış

PGA (Program Global Alanı), bir hizmet sürecinin verilerini ve kontrol bilgilerini içeren bir hafıza alanıdır. Bir hizmet süreci başlatıldığında ve paylaşılmadığında Oracle tarafından oluşturulur. Bir Oracle işleminin bir PGA bellek alanı vardır. Bir PGA'ya yalnızca sahibi olan hizmet süreci tarafından erişilebilir ve yalnızca bu süreçteki Oracle kodu okuyabilir ve yazabilir. Bu nedenle, PGA'daki yapının Mandal korumasına ihtiyacı yoktur.

Tüm hizmet süreçlerinin toplam PGA belleği sayısını, sunucu tarafından tahsis edilen toplam PGA (Aggregated PGA) ile sınırlandırılabilir.

Tahsis edilmiş sunucu (Dedicated Server) modunda Oracle, her oturum için bir Oracle süreci başlatacaktır; çok iş parçacıklı hizmet (Çok İş Parçacıklı Sunucu MTS) modunda, birden çok oturum bir Oracle hizmet sürecini paylaşır.

PGA, işlem tarafından kullanılan işletim sistemi kaynakları hakkında bilgilerin yanı sıra işlemin durumu hakkında bazı bilgiler içerir. Süreç tarafından kullanılan Oracle paylaşılan kaynakları ile ilgili bilgiler SGA'da yer almaktadır. Bunu yaparak, bu kaynaklar, işlem sonlandırıldığında zamanında serbest bırakılabilir ve temizlenebilir.

01

PGA'nın bileşimi

PGA iki alandan oluşur: sabit PGA ve değişken PGA (veya PGA yığını, PGA Yığını [yığın Yığın, yönetilen bir bellek alanıdır]). Sabit PGA, sabit SGA'ya benzer, boyutu sabittir ve çok sayıda atomik değişken, küçük veri yapıları ve değişken PGA'lara işaretçiler içerir.

Bir bellek yığını, değişken bir PGA'dır. Bellek bölümü X $ KSMPP görünümünden bulunabilir (başka bir görünüm X $ KSMSP, değişken SGA'nın bellek bölümü bilgisini bulabilir ve yapıları aynıdır). PGA yığını, X $ tablolarını (bağımlılıklar ve DB_FILES, CONTROL_FILES dahil olmak üzere parametre ayarları) depolamak için kullanılan belleği içerir.

Genel olarak, PGA'nın değişken bölgesi esas olarak aşağıdaki üç bölüme ayrılır:

  • Özel SQL alanı;
  • İmleç ve SQL alanı
  • Oturum hafızası

1. Özel SQL Alanı (Özel SQL Alanı)

Özel SQL alanı, bağlama değişken değerleri ve çalışma zamanı bellek yapısı bilgileri gibi verileri içerir. SQL ifadelerini çalıştıran her oturumun bir özel blok SQL alanı vardır. Aynı SQL ifadesini gönderen tüm kullanıcıların kendi özel SQL alanı vardır ve paylaşılan bir SQL alanını paylaşırlar. Bu nedenle, paylaşılan bir SQL alanı birden çok özel paylaşılan alanla ilişkilendirilebilir.

Bir imlecin özel SQL alanı, farklı yaşam döngülerine sahip iki alana bölünmüştür:

  • Kalıcı alan. Bağlayıcı değişken bilgilerini içerir. İmleç kapatıldığında serbest bırakılır.
  • Çalışma alanı. İnfaz bittiğinde serbest bırakıldı.

Bir çalışma zamanı alanı oluşturmak, bir seferde bir isteği yürütmenin ilk adımıdır. INSERT, UPDATE ve DELETE ifadeleri için Oracle, ifadenin sonunda çalışma zamanı alanını serbest bırakır. Sorgu işlemleri için Oracle, çalışma zamanı alanını yalnızca tüm kayıtlar alındığında veya sorgu iptal edildiğinde serbest bırakır.

2, İmleçler ve SQL Alanları (İmleçler ve SQL Alanları)

Oracle önceden derlenmiş bir programın veya OCI programının uygulama geliştiricisi açıkça bir imleci açabilir veya belirli bir özel SQL alanını kontrol edebilir ve programın çalışması için adlandırılmış kaynaklar olarak kullanabilir. Ayrıca Oracle, bazı SQL ifadeleri tarafından oluşturulan özyinelemeli çağrılar için paylaşılan SQL alanını örtük olarak kullanır (daha önce açıklanmıştır, veri sözlüğü bilgilerini okuyun).

Özel SQL alanı, kullanıcı süreci tarafından yönetilir. Özel SQL alanının nasıl tahsis edileceği ve serbest bırakılacağı büyük ölçüde kullandığınız uygulama araçlarına bağlıdır. Kullanıcı işlemi tarafından tahsis edilebilecek özel SQL alanlarının sayısı OPEN_CURSORS parametresi tarafından kontrol edilir ve varsayılan değeri 50'dir.

İmleç kapatılmadan veya ifade tutamacı bırakılmadan önce, özel SQL alanı her zaman var olacaktır (ancak çalışma zamanı alanı, ifade yürütmenin sonunda serbest bırakılır ve yalnızca kalıcı alan her zaman vardır). Uygulama geliştiricileri, kullanıcı programlarının kapladığı belleği azaltmak için artık kullanımda olmayan tüm açık imleçleri kapatarak kalıcı alanı serbest bırakabilirler.

3. Oturum Hafızası

Oturum belleği, oturum değişkenlerini (oturum açma bilgileri gibi) ve oturum öncesi ile ilgili diğer bilgileri depolamak için kullanılan bellek bölümüdür. Paylaşılan sunucu modu için, oturum belleği paylaşılır, özel değildir.

Karmaşık sorgular için (karar destek sistemlerindeki sorgular gibi), çalışma zamanı alanının büyük bir kısmı, çok fazla bellek gerektiren işlemler tarafından SQL Çalışma Alanına (SQL Çalışma Alanı) tahsis edilir. Bu işlemler şunları içerir:

  • Sıralama tabanlı işlemler (ORDER BY, GROUP BY, ROLLUP, pencere fonksiyonları);
  • Hash Join
  • Bitmap birleştirme
  • Bitmap oluşturma

Çalışma alanının boyutu ayarlanabilir. Genel olarak konuşursak, geniş bir çalışma alanı bazı belirli işlemleri daha iyi hale getirebilir, ancak aynı zamanda daha fazla bellek tüketir. Çalışma alanı boyutunun giriş verilerine ve ilgili SQL işlemleri için gerekli yardımcı belleğe uyum sağlamak için yeterli olması optimaldir. Tatmin edilmezse, verilerin bir kısmının işlenmek üzere geçici tablo alanı diskine yerleştirilmesi gerektiğinden, işlemin yanıt süresi artacaktır.

02

PGA bellek otomatik yönetimi

SQL çalışma alanı otomatik olarak ve global olarak yönetilebilir. DBA'nın yalnızca bir örneğin PGA belleğinin toplam boyutunu belirtmek için PGA_AGGREGATE_TARGET parametresini ayarlaması gerekir. Bu parametreyi ayarladıktan sonra Oracle, bunu bir toplam global limit değeri olarak görür ve tüm Oracle servis süreçlerinin toplam PGA belleğini bu değeri aşmamaya çalışır.

WORKAREA_SIZE_POLICY parametresi, PGA belleğini yönetmek için PGA_AGGREGATE_TARGET'in kullanılıp kullanılmayacağına karar verir. AUTO ve MANUAL olmak üzere iki değeri vardır. Varsayılan AUTO'dur, yani PGA belleğini yönetmek için PGA_AGGREGATE_TARGET'i kullanın. Aslında, WORKAREA_SIZE_POLICY parametresinin adından, Oracle'ın otomatik PGA bellek yönetiminin yalnızca çalışma alanını ayarlayacağı ve çalışma dışı alanın (sabit PGA alanı) etkilenmeyeceği görülebilir.

PGA_AGGREGATE_TARGET ayarlandıktan sonra, her işlemin PGA belleğinin boyutu da sınırlandırılır:

  • Seri işlem sırasında, her işlem için kullanılabilir PGA belleği MIN'dir (PGA_AGGREGATE_TARGET * 5%, _pga_max_size / 2) ve _pga_max_size örtük parametresinin varsayılan değeri 200M'dir ve ayrıca değiştirilmesi tavsiye edilmez.
  • Paralel olarak çalışırken, paralel ifadeler için mevcut PGA belleği PGA_AGGREGATE_TARGET *% 30 / DOP (Paralellik Derecesi) şeklindedir.

03

Özel Sunucu ve Paylaşılan Sunucu

PGA belleğinin yönetimi ve tahsisi büyük ölçüde hizmet modeline bağlıdır. Aşağıdaki tablo, farklı modlarda PGA belleğinin farklı bölümlerinin tahsisinin benzerlik ve farklılıklarını gösterir:

04

İlgili parametreler

PGA'nın yönetimi ve dağıtımı birden fazla sistem parametresi tarafından kontrol edilir. Bu parametreler aşağıda tanıtılmıştır:

1. PGA_AGGREGATE_TARGET

Bu parametre daha önce tanıtıldı. Tüm işlemlerin PGA belleğinin toplam boyutunu kontrol eder.

Tescilli hizmet modunda, PGA_AGGREGATE_TARGET önerilir.

PGA_AGGREGATE_TARGET değer aralığı 10M (4096G-1) bayttır.

PGA_AGGREGATE_TARGET boyutunun ayarlanması için Oracle, aşağıdaki önerilerden birini sağlar (bkz.Metalink Notu: 223730.1):

  • OLTP sistemleri için, PGA_AGGREGATE_TARGET = (fiziksel bellek boyutu *% 80) *% 20
  • DSS sistemi için, PGA_AGGREGATE_TARGET = (fiziksel bellek boyutu *% 80) *% 50

Örneğin, sisteminiz bir OLTP sistemiyse ve fiziksel bellek 8G ise, PGA_AGGREGATE_TARGET'i (8 *% 80) *% 20 = 1.28G olarak ayarlamanız önerilir.

2. WORKAREA_SIZE_POLICY

WORKAREA_SIZE_POLICY parametresi, PGA belleğini yönetmek için PGA_AGGREGATE_TARGET'in kullanılıp kullanılmayacağına karar verir. AUTO ve MANUAL olmak üzere iki değeri vardır. Varsayılan AUTO'dur, yani PGA belleğini yönetmek için PGA_AGGREGATE_TARGET'i kullanın.

3. sort_area_size

Oracle sıralama işlemleri yaparken (ORDER BY, GROUP BY, ROLLUP, pencere fonksiyonları), bellekteki veri kayıtlarını sıralamak için çalışma alanından belirli bir bellek alanı ayırması gerekir. Sıralama tamamlandıktan sonra Oracle, veriler iade edilmeden önce belleğin bu bölümünü serbest bırakacaktır. SORT_AREA_SIZE, belleğin bu bölümünün boyutunu belirtir. PGA_AGGREGATE_TARGET ayarlandıktan sonra bu parametre geçersizdir.

Paylaşımlı servis modunda olmadığı sürece, genellikle bu parametrenin ayarlanması tavsiye edilmez ve otomatik PGA hafıza yönetimi için PGA_AGGREGATE_TARGET kullanılması tavsiye edilir. Bu parametreyi ayarlamanız gerekiyorsa, 1M ile 3M arasında ayarlamayı düşünebilirsiniz.

Oracle, bir sorgu için birden çok sıralama alanı tahsis edebilir. Normalde, bir ifadenin yalnızca bir veya iki sıralama işlemi vardır, ancak karmaşık cümleler için birden çok sıralama işlemi olabilir ve her sıralama işleminin kendi sıralama alanı vardır. Bu nedenle, ifadenin karmaşıklığı, her işlemin PGA belleğinin boyutunu da etkiler.

4. sort_area_retained_size

Bu parametre SORT_AREA_SIZE ile bağlantılı olarak kullanılır. Sıralama işlemi tamamlandıktan sonra, tüm veri satırları geri dönene kadar hafızada sıralamayı sürdürmek için kullanıcı global alanını (Kullanıcı Global Alanı UGA, UGA ile PGA arasındaki ilişki, UGA bölümünde SGA tanıtılmıştır) korumak için maksimum hafıza boyutunu belirtir. Daha sonra serbest bırakın (yukarıda belirtildiği gibi, SORT_AREA_SIZE belleği, sıralama tamamlanmadan ve veri satırı döndürülmeden önce serbest bırakılır) UGA'ya geri dönün (not: UGA'ya geri verilir ve işletim sistemi tarafından geri dönüştürülmez).

SORT_AREA_RETAINED_SIZE, paylaşılan serviste SGA'dan tahsis edilir (çünkü UGA bu zamanda SGA'dan tahsis edilir) ve tescilli servis modelinde PGA'dan tahsis edilir. Ve SORT_AREA_SIZE, hangi modda olursa olsun PGA'dan tahsis edilir.

Benzer şekilde, PGA_AGGREGATE_TARGET ayarlandıktan sonra bu parametre geçersizdir.

5. hash_area_size

HASH_AREA_SIZE, Hash Join yaparken karma bellek tablosunun kaplayabileceği bellek alanını ayarlar. Benzer şekilde, PGA_AGGREGATE_TARGET ayarlandıktan sonra bu parametre geçersizdir. Varsayılan değer boyutu sort_area_size'nin 1,5 katıdır.

Ek olarak, Hash Join yalnızca optimize edici CBO (Maliyet Tabanlı İyileştirici) modunda olduğunda geçerli olduğundan, bu parametre yalnızca CBO modunda anlamlıdır.

6. hash_join_enable

Bu parametre, Hash Join'in etkinleştirilip etkinleştirilmeyeceğini belirler. Varsayılan DOĞRU'dur.

Hash Join yalnızca optimizer CBO (Cost-Base Optimizer) modunda olduğunda geçerli olduğundan, bu parametre yalnızca CBO modunda anlamlıdır.

10g'de bu parametre örtük bir parametredir.

7. bitmap_merge_area_size

Bir bitmap dizini (Bitmap Dizini) kullanırken oracle, dizin bitmap segmenti için bir bitmap oluşturur. Bir bit eşlem dizini tararken, taranan bit eşlem dizininin sıralanması ve bit eşlemle birleştirilmesi gerekir (Birleştirme) Oracle, sıralama ve birleştirme için PGA'da bir alan açacaktır. BITMAP_MERGE_AREA_SIZE parametresi bu alanın boyutunu belirtir. Varsayılan değer 1M'dir.

Benzer şekilde, PGA_AGGREGATE_TARGET ayarlandıktan sonra bu parametre geçersizdir.

8. create_bitmap_area_size

Alan kümesinin potansiyeli (Kardinalite, kayıt satırlarının sayısını ifade eder, alanın farklı değerlerinin bir faktörüdür. Kayıt sayısı ne kadar çoksa, farklı değerler ne kadar azsa, kümenin potansiyeli o kadar küçükse) ve tablodaki veriler çok fazla değişmediğinde, Alanın alma verimliliğini artırmak için alan için bir bit eşlem dizini oluşturmayı düşünün. Bu parametre, bir bitmap dizini oluştururken kullanılan bellek alanını belirtir. Varsayılan boyutu 8M'dir.

Benzer şekilde, PGA_AGGREGATE_TARGET ayarlandıktan sonra bu parametre geçersizdir.

9, open_cursors

Bu parametre, bir oturumun aynı anda açabileceği imleç sayısını ayarlar. Çünkü bir imleç her açıldığında, PGA belleğinin bir kısmının özel bir SQL alanı olarak tahsis edilmesi gerekir. Bu nedenle, bu parametre aynı zamanda her işlem tarafından kullanılan PGA belleğinin boyutunu da etkiler.

05

Önemli görünüm

1. V $ PGASTA

V $ PGASTAT, otomatik PGA bellek yönetimi başlatıldığında PGA bellek kullanımının istatistiksel bilgilerini ve istatistiksel bilgileri sağlar. Görünümde biriken veriler, örnek başlatıldıktan sonra toplanır.

2. V $ PGA_TARGET_ADVICE

Bu görünüm, PGA optimizasyon danışmanının tahmini tahmin sonuçlarını görüntüleyebilir V $ PGASTAT'ın çeşitli PGA_AGGREGATE_TARGET değerlerinde görüntüleyebileceği PGA performans istatistiklerini gösterir. Tahmin için seçilen PGA_AGGREGATE_TARGET değeri, mevcut PGA_AGGREGATE_TARGET etrafındaki değerdir. Tahmini istatistiksel değer, örnek başlatıldıktan sonraki yüke göre simüle edilir.

Yalnızca danışman açıldığında (_smm_advice_enabled örtük parametresi TRUE'dur) ve STATISTICS_LEVEL parametresinin değeri BASIC olmadığında, görünümde içerik olacaktır. Örnek yeniden başlatıldıktan sonra tüm tahmin verilerinin üzerine yazılacaktır.

3. V $ SYSSTAT, V $ SESSTAT

Bu iki görünüm sistemin (oturum) istatistiklerini gösterir. İstatistiksel öğeleri temelde aynıdır, ancak fark, birinin sistem düzeyinde ve diğerinin oturum düzeyinde olmasıdır.

4. V $ SQL_WORKAREA

Bu görünüm, SQL imleci tarafından kullanılan çalışma alanı hakkındaki bilgileri gösterir. Paylaşılan Havuzda depolanan her SQL ifadesinin, V $ SQL tarafından görüntülenebilen bir veya daha fazla alt imleci vardır. Ve V $ SQL_WORKAREA, bu imleçler tarafından kullanılması gereken çalışma alanı bilgilerini görüntüler. Sorgu için V $ SQL ile birleştirilebilir.

5. V $ SQL_WORKAREA_ACTIVE

Bu görünüm, sistem tarafından halihazırda tahsis edilen çalışma alanı hakkında anlık bilgileri içerir. Çalışma alanı bilgilerini WORKAREA_ADDRESS join V $ SQL_WORKAREA alanı aracılığıyla sorgulayabilirsiniz. Çalışma alanı diske taşarsa, bu görünüm çalışma alanının taştığı geçici segmentler hakkında bilgi içerir. V $ TEMPSEG_USAGE görünümüne katılarak daha fazla geçici segment bilgisi elde edilebilir.

Bu görünüm aşağıdaki sorunları çözebilir:

1. Mevcut sistem tarafından tahsis edilen en büyük çalışma alanı;

2. Fazla yüklenmiş belleğin yüzdesi (EXPECTED_SIZE < ACTUAL_MEM_USED) ve fazla yüklenmemiş belleğin yüzdesi (EXPECTED_SIZE > ACTUAL_MEM_USED);

3. Hangi etkin çalışma alanı, beklenen bellek yönetimini aşan bellek boyutunu kullanır;

4. Hangi etkin çalışma alanının diske taştığı.

6. V $ PROSES

Bu görünüm, tüm Oracle süreçleri hakkındaki bilgileri gösterir. Aşağıdaki alanlar, işlem PGA belleğinin kullanımını açıklamaktadır.

  • PGA_USED_MEM: İşlem tarafından kullanılan PGA belleği
  • PGA_ALLOCATED_MEM: İşleme ayrılan PGA belleği
  • PGA_MAX_MEM: İşlem tarafından kullanılan en büyük PGA belleği.

Daha fazla devop ve DBA içeriği daha sonra paylaşılacak ve ilgilenen arkadaşlar buna dikkat edebilir ~

Genel durum belirlendi! Xiamen Doğu Sporları Kongre ve Sergisi Yeni Şehri'nin en son planı ortaya çıktı! Gelecek böyle inşa edilecek
önceki
Liu Qiangdong'un "Cinsel Saldırı" Davası 11 Eylül'de Başlıyor
Sonraki
Ayrıntılı ORACLE veri sözlüğü - V $ SQL_WORKAREA_ACTIVE
Solda kahve, sağda açık kahverengi çay, Ruixing Coffee'nin "yangmou" sunu gerçekten anlıyor musunuz?
Oracle veritabanının DBMS_METADATA paketi aracılığıyla nesne DDL ifadesini nasıl elde ettiğini açıklayın
Çok garip bir fenomeni hatırlayın: Oracle veritabanı undobs1 tablo alanı açıklanamaz bir şekilde kayboluyor mu?
Binlerce sebze yetiştiricisi yerinde duramıyor! Tencent yine vurdu, bu endüstri altüst olacak
Oracle RAC'ın "HA" ve "LB" lerini ve yük dengelemeyi test etmek için komut dosyalarının nasıl kullanılacağını ayrıntılı olarak açıklayın
Toplanmaya değer bir MySQL günlük analizi eseri-mysqlsla paylaşın
Ekspres teslimatta borsada işlem gören on milyarlarca şirketin yeteneklerini ortaya çıkarın
Oracle pratik komut dosyası paylaşımı - işletim sistemi sürecine göre veritabanına karşılık gelen yavaş SQL'i bulun
Özellik 2019 Çin Kentsel Gayrimenkul Piyasası Yatırım Beklentisi Araştırma Raporu
2 tecavüz 1 ölüm, 4 komütasyonla sonuçlandı ve hapishaneden serbest bırakıldı! Bu kez 15 yaşındaki kız acı çekti ...
Optimize edilmiş sistem - Sıcak blokların ve sıcak blokların işlem kayıtlarını hızlı bir şekilde sorgulayın
To Top