Aracılığıyla paylaş


Kaynak Kullanımı / Bellek

autovacuum_work_mem

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama Her otomatik vakum çalışan işlemi tarafından kullanılacak en yüksek belleği ayarlar.
Veri türü integer
Default value -1
İzin verilen değerler -1-2097151
Parametre türü dynamic
Belgeler autovacuum_work_mem

dynamic_shared_memory_type

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama Kullanılan dinamik paylaşılan bellek uygulamasını seçer.
Veri türü listeleme
Default value posix
İzin verilen değerler posix
Parametre türü salt okunur
Belgeler dynamic_shared_memory_type

hash_mem_multiplier

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama Karma tablolar için kullanılacak work_mem katı.
Veri türü sayısal
Default value 2
İzin verilen değerler 1-1000
Parametre türü dynamic
Belgeler hash_mem_multiplier

huge_pages

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama Büyük bellek sayfalarının kullanımını etkinleştirir/devre dışı bırakır. Bu ayar, 4'ten az sanal çekirdeği olan sunucular için geçerli değildir.
Veri türü listeleme
Default value try
İzin verilen değerler on,off,try
Parametre türü static
Belgeler huge_pages

Açıklama

Büyük sayfalar, belleğin daha büyük bloklarda yönetilmesini sağlayan bir özelliktir. Standart 4 KB sayfa yerine genellikle 2 MB'a kadar blokları yönetebilirsiniz.

Çok büyük sayfaların kullanılması, CPU'ları etkili bir şekilde boşaltan performans avantajları sunabilir:

  • Daha az çeviri lookaside buffer (TLB) hatası gibi bellek yönetimi görevleriyle ilişkili ek yükü azaltır.
  • Bellek yönetimi için gereken süreyi kısaltır.

Özellikle, PostgreSQL'de büyük sayfaları yalnızca paylaşılan bellek alanı için kullanabilirsiniz. Paylaşılan bellek alanının önemli bir bölümü paylaşılan arabellekler için ayrılır.

Başka bir avantajı, büyük sayfaların paylaşılan bellek alanının diske değişimini engellemesi ve bu da performansı daha da dengeler.

Öneriler

  • Önemli bellek kaynaklarına sahip sunucular için büyük sayfaları devre dışı bırakmaktan kaçının. Çok büyük sayfaları devre dışı bırakmak performansı tehlikeye atabilir.
  • Çok büyük sayfaları desteklemeyen daha küçük bir sunucuyla başlıyorsanız ancak bunu destekleyen bir sunucuya ölçeği artırmayı düşünüyorsanız, sorunsuz geçiş ve en iyi performans için ayarını konumunda TRY tutunhuge_pages.

Azure'a özgü notlar

Dört veya daha fazla sanal çekirdek içeren sunucular için, temel alınan işletim sisteminden büyük sayfalar otomatik olarak ayrılır. Bu özellik, dörtten az sanal çekirdeği olan sunucularda kullanılamaz. büyük sayfa sayısı, üzerinde yapılan değişiklikler shared_buffersde dahil olmak üzere paylaşılan bellek ayarları değiştirilirse otomatik olarak ayarlanır.

huge_page_size

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama İstenmesi gereken büyük sayfa boyutu.
Veri türü integer
Default value 0
İzin verilen değerler 0
Parametre türü salt okunur
Belgeler huge_page_size

logical_decoding_work_mem

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama Mantıksal kod çözme için kullanılacak en yüksek belleği ayarlar.
Veri türü integer
Default value 65536
İzin verilen değerler 65536
Parametre türü salt okunur
Belgeler logical_decoding_work_mem

maintenance_work_mem

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama VACUUM, Create Index gibi bakım işlemleri için kullanılacak en yüksek belleği ayarlar.
Veri türü integer
Default value Sunucuya ayrılan kaynaklara (sanal çekirdekler, RAM veya disk alanı) bağlıdır.
İzin verilen değerler 1024-2097151
Parametre türü dynamic
Belgeler maintenance_work_mem

Açıklama

maintenance_work_mem PostgreSQL'deki bir yapılandırma parametresidir. , CREATE INDEXve ALTER TABLEgibi VACUUMbakım işlemleri için ayrılan bellek miktarını yönetir. 'nin aksine work_mem, sorgu işlemleri için bellek ayırmayı etkiler, maintenance_work_mem veritabanı yapısını koruyan ve en iyi duruma getiren görevler için ayrılmıştır.

Önemli noktalar

  • Vakum bellek üst sınırı: Ölü tanımlama demetlerinin temizlenmesini artırarak maintenance_work_memhızlandırmak istiyorsanız, ölü tanımlama grubu tanımlayıcılarını toplamak için yerleşik bir sınırlama olduğunu VACUUM unutmayın. Bu işlem için yalnızca 1 GB'a kadar bellek kullanabilir.
  • Otomatik vakum için bellek ayrımı: Otomatik vakum işlemlerinin autovacuum_work_mem bağımsız olarak kullandığı belleği denetlemek için ayarını kullanabilirsiniz. Bu ayar, öğesinin maintenance_work_membir alt kümesi olarak görev yapar. Diğer bakım görevleri ve veri tanımı işlemleri için bellek ayırmayı etkilemeden otomatik vakum işlevinin ne kadar bellek kullandığına karar vekleyebilirsiniz.

Azure'a özgü notlar

Sunucu parametresinin maintenance_work_mem varsayılan değeri, işlem için seçtiğiniz ürün adına göre esnek PostgreSQL için Azure Veritabanı sunucu örneğini sağladığınızda hesaplanır. Esnek sunucuyu destekleyen işlemde ürün seçiminde yapılan sonraki değişiklikler, o örneğin sunucu parametresi için maintenance_work_mem varsayılan değer üzerinde herhangi bir etkiye sahip olmayacaktır.

Bir örneğe atanan ürünü her değiştirdiğinizde, parametrenin değerini maintenance_work_mem aşağıdaki formüldeki değerlere göre de ayarlamanız gerekir.

değerini maintenance_work_mem hesaplamak için kullanılan formül: (long)(82.5 * ln(memoryGiB) + 40) * 1024.

Önceki formüle bağlı olarak, aşağıdaki tabloda sağlanan bellek miktarına bağlı olarak bu sunucu parametresinin ayarlanacağı değerler listelenmiştir:

Bellek boyutu maintenance_work_mem
2 GiB 99328 KiB
4 GiB 157696 KiB
8 GiB 216064 KiB
16 GiB 274432 KiB
32 GiB 332800 KiB
48 GiB 367616 KiB
64 GiB 392192 KiB
80 GiB 410624 KiB
128 GiB 450560 KiB
160 GiB 468992 KiB
192 GiB 484352 KiB
256 GiB 508928 KiB
384 GiB 542720 KiB
432 GiB 552960 KiB
672 GiB 590848 KiB

max_prepared_transactions

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama Eşzamanlı olarak hazırlanmış en fazla işlem sayısını ayarlar. Çoğaltma sunucusunu çalıştırırken, bu parametreyi birincil sunucudakiyle aynı veya daha yüksek bir değere ayarlamanız gerekir.
Veri türü integer
Default value 0
İzin verilen değerler 0-262143
Parametre türü static
Belgeler max_prepared_transactions

max_stack_depth

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama Maksimum yığın derinliğini kilobayt olarak ayarlar.
Veri türü integer
Default value 2048
İzin verilen değerler 2048
Parametre türü salt okunur
Belgeler max_stack_depth

min_dynamic_shared_memory

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama Başlangıçta ayrılmış dinamik paylaşılan bellek miktarı.
Veri türü integer
Default value 0
İzin verilen değerler 0
Parametre türü salt okunur
Belgeler min_dynamic_shared_memory

shared_buffers

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama Sunucu tarafından kullanılan paylaşılan bellek arabelleklerinin sayısını ayarlar. Birim 8 kb'dir. İzin verilen değerler kullanılabilir belleğin %10 - %75'i aralığındadır.
Veri türü integer
Default value Sunucuya ayrılan kaynaklara (sanal çekirdekler, RAM veya disk alanı) bağlıdır.
İzin verilen değerler 16-1073741823
Parametre türü static
Belgeler shared_buffers

Açıklama

Yapılandırma shared_buffers parametresi, verileri arabelleğe almak için PostgreSQL veritabanına ayrılan sistem belleği miktarını belirler. Tüm veritabanı işlemleri tarafından erişilebilen merkezi bir bellek havuzu görevi görür.

Veri gerektiğinde, veritabanı işlemi önce paylaşılan arabelleği denetler. Gerekli veriler varsa, hızlı bir şekilde alınır ve daha fazla zaman alan bir disk okumasını atlar. Paylaşılan arabellekler, veritabanı işlemleriyle disk arasında bir aracı görevi görür ve gerekli G/Ç işlemlerinin sayısını etkili bir şekilde azaltır.

Azure'a özgü notlar

Sunucu parametresinin shared_buffers varsayılan değeri, işlem için seçtiğiniz ürün adına göre esnek PostgreSQL için Azure Veritabanı sunucu örneğini sağladığınızda hesaplanır. Esnek sunucuyu destekleyen işlemde ürün seçiminde yapılan sonraki değişiklikler, bu örneğin sunucu parametresi için shared_buffers varsayılan değer üzerinde herhangi bir etkiye sahip değildir.

Bir örneğe atanan ürünü her değiştirdiğinizde, parametrenin değerini shared_buffers aşağıdaki formüllerdeki değerlere göre de ayarlamanız gerekir.

En fazla 2 GiB belleğe sahip sanal makineler için değerini shared_buffers hesaplamak için kullanılan formül olur memoryGib * 16384.

2 GiB'den fazla sanal makine için değerini shared_buffers hesaplamak için kullanılan formül şeklindedir memoryGib * 32768.

Önceki formüle bağlı olarak, aşağıdaki tabloda sağlanan bellek miktarına bağlı olarak bu sunucu parametresinin ayarlanacağı değerler listelenmiştir:

Bellek boyutu shared_buffers
2 GiB 32768
4 GiB 131072
8 GiB 262144
16 GiB 524288
32 GiB 1048576
48 GiB 1572864
64 GiB 2097152
80 GiB 2621440
128 GiB 4194304
160 GiB 5242880
192 GiB 6291456
256 GiB 8388608
384 GiB 12582912
432 GiB 14155776
672 GiB 22020096

shared_memory_type

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama Ana paylaşılan bellek bölgesi için kullanılan paylaşılan bellek uygulamasını seçer.
Veri türü listeleme
Default value mmap
İzin verilen değerler mmap
Parametre türü salt okunur
Belgeler shared_memory_type

temp_buffers

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama Her veritabanı oturumu tarafından kullanılan en fazla geçici arabellek sayısını ayarlar.
Veri türü integer
Default value 1024
İzin verilen değerler 100-1073741823
Parametre türü dynamic
Belgeler temp_buffers

vacuum_buffer_usage_limit

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama VACUUM, ANALYZE ve autovacuum için arabellek havuzu boyutunu ayarlar.
Veri türü integer
Default value 2048
İzin verilen değerler 0-16777216
Parametre türü dynamic
Belgeler vacuum_buffer_usage_limit

work_mem

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama Geçici disk dosyalarına yazmadan önce iç sıralama işlemleri ve karma tabloları tarafından kullanılacak bellek miktarını ayarlar.
Veri türü integer
Default value 4096
İzin verilen değerler 4096-2097151
Parametre türü dynamic
Belgeler work_mem

Açıklama

work_mem PostgreSQL'deki parametresi, her veritabanı oturumunun özel bellek alanındaki belirli iç işlemler için ayrılan bellek miktarını denetler. Bu işlemlere örnek olarak sıralama ve karma oluşturma verilebilir.

Paylaşılan bellek alanında yer alan paylaşılan arabelleklerin aksine, work_mem oturum başına veya sorgu başına özel bellek alanında ayrılır. Yeterli work_mem bir boyut ayarlayarak bu işlemlerin verimliliğini önemli ölçüde artırabilir ve diske geçici veri yazma gereksinimini azaltabilirsiniz.

Önemli noktalar

  • Özel bağlantı belleği: work_mem her veritabanı oturumunun kullandığı özel belleğin bir parçasıdır. Bu bellek, kullanılan paylaşılan bellek alanından shared_buffers farklıdır.
  • Sorguya özgü kullanım: Tüm oturumlar veya sorgular kullanmaz work_mem. gibi SELECT 1 basit sorguların gerektirme work_memolasılığı düşüktür. Ancak, sıralama veya karma oluşturma gibi işlemleri içeren karmaşık sorgular work_membir veya birden çok öbeği tüketebilir.
  • Paralel işlemler: Birden çok paralel arka uca yayılan sorgular için her arka uç bir veya birden çok öbek work_memkullanabilir.

work_mem izleme ve ayarlama

Öncelikle sıralama veya karma işlemleriyle ilgili sorgu yürütme sürelerinin yavaş olması durumunda sisteminizin performansını sürekli izlemek ve gerektiği gibi ayarlamak work_mem önemlidir. Azure portalında bulunan araçları kullanarak performansı izlemenin yolları şunlardır:

  • Sorgu performansı içgörüleri: Geçici dosyalar oluşturan sorguları tanımlamak için Geçici dosyalara göre en çok kullanılan sorgular sekmesini denetleyin. Bu durum, öğesinin artırılmasına work_memyönelik olası bir gereksinim olduğunu gösterir.
  • Sorun giderme kılavuzları: Sorunlu sorguları tanımlamak için sorun giderme kılavuzlarındaki Yüksek geçici dosyalar sekmesini kullanın.
Ayrıntılı ayarlama

Parametresini work_mem yönetirken, genel bir değer ayarlamak yerine ayrıntılı ayarlama yaklaşımını benimsemek genellikle daha verimli olur. Bu yaklaşım, işlemlerin ve kullanıcıların belirli gereksinimlerine göre bellek ayırmanızı sağlar. Ayrıca yetersiz bellek sorunlarıyla karşılaşma riskini de en aza indirir. Bu konuda şu şekilde devam edebilirsiniz:

  • Kullanıcı düzeyi: Belirli bir kullanıcı öncelikle yoğun bellek kullanan toplama veya raporlama görevlerinde yer alıyorsa, söz konusu kullanıcının değerini özelleştirmeyi work_mem göz önünde bulundurun. ALTER ROLE Kullanıcının işlemlerinin performansını artırmak için komutunu kullanın.

  • İşlev/yordam düzeyi: Belirli işlevler veya yordamlar önemli miktarda geçici dosya oluşturuyorsa, belirli işlev veya yordam düzeyinde değeri artırmak work_mem yararlı olabilir. Bu işlemlere ALTER FUNCTION özel olarak daha fazla bellek ayırmak için veya ALTER PROCEDURE komutunu kullanın.

  • Veritabanı düzeyi: Yalnızca belirli veritabanları yüksek sayıda geçici dosya oluşturuyorsa veritabanı düzeyinde değişiklik work_mem yapın.

  • Genel düzey: Sisteminizin analizi çoğu sorgunun küçük geçici dosyalar oluşturduğunu, ancak yalnızca birkaçının büyük dosyalar oluşturduğunu gösterirse, değeri genel olarak artırmak work_mem akıllıca olabilir. Bu eylem sorguların çoğunun bellekte işlenmesini kolaylaştırır, böylece disk tabanlı işlemlerden kaçınabilir ve verimliliği artırabilirsiniz. Ancak, artan work_mem değeri işleyebileceğinden emin olmak için her zaman dikkatli olun ve sunucunuzdaki bellek kullanımını izleyin.

Sıralama işlemleri için en düşük work_mem değerini belirleme

Özellikle sıralama işlemi sırasında geçici disk dosyaları oluşturan belirli bir sorgunun en düşük work_mem değerini bulmak için, sorgu yürütme sırasında oluşturulan geçici dosya boyutunu göz önünde bulundurarak başlayın. Örneğin, bir sorgu 20 MB geçici bir dosya oluşturuyorsa:

  1. psql veya tercih ettiğiniz PostgreSQL istemcisini kullanarak veritabanınıza bağlanın.
  2. Bellekte işlenirken ek üst bilgileri hesaba katmak için 20 MB'tan biraz daha yüksek bir başlangıç work_mem değeri ayarlayın. Şunun gibi bir komut kullanın: SET work_mem TO '25MB'.
  3. Aynı oturumda sorunlu sorguda komutunu çalıştırın EXPLAIN ANALYZE .
  4. için "Sort Method: quicksort Memory: xkB"çıktıyı gözden geçirin. değerini gösteriyorsa "external merge Disk: xkB", değeri artımlı olarak yükseltin work_mem ve görünene kadar "quicksort Memory" yeniden test edin. Sorgunun "quicksort Memory" artık bellekte çalıştığını belirten sinyallerin görünümü.
  5. Bu yöntem aracılığıyla değeri belirledikten sonra, operasyonel gereksinimlerinize uyacak şekilde genel olarak veya daha ayrıntılı düzeylerde (daha önce açıklandığı gibi) uygulayabilirsiniz.

autovacuum_work_mem

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama Her otomatik vakum çalışan işlemi tarafından kullanılacak en yüksek belleği ayarlar.
Veri türü integer
Default value -1
İzin verilen değerler -1-2097151
Parametre türü dynamic
Belgeler autovacuum_work_mem

dynamic_shared_memory_type

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama Kullanılan dinamik paylaşılan bellek uygulamasını seçer.
Veri türü listeleme
Default value posix
İzin verilen değerler posix
Parametre türü salt okunur
Belgeler dynamic_shared_memory_type

hash_mem_multiplier

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama Karma tablolar için kullanılacak work_mem katı.
Veri türü sayısal
Default value 2
İzin verilen değerler 1-1000
Parametre türü dynamic
Belgeler hash_mem_multiplier

huge_pages

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama Büyük bellek sayfalarının kullanımını etkinleştirir/devre dışı bırakır. Bu ayar, 4'ten az sanal çekirdeği olan sunucular için geçerli değildir.
Veri türü listeleme
Default value try
İzin verilen değerler on,off,try
Parametre türü static
Belgeler huge_pages

Açıklama

Büyük sayfalar, belleğin daha büyük bloklarda yönetilmesini sağlayan bir özelliktir. Standart 4 KB sayfa yerine genellikle 2 MB'a kadar blokları yönetebilirsiniz.

Çok büyük sayfaların kullanılması, CPU'ları etkili bir şekilde boşaltan performans avantajları sunabilir:

  • Daha az çeviri lookaside buffer (TLB) hatası gibi bellek yönetimi görevleriyle ilişkili ek yükü azaltır.
  • Bellek yönetimi için gereken süreyi kısaltır.

Özellikle, PostgreSQL'de büyük sayfaları yalnızca paylaşılan bellek alanı için kullanabilirsiniz. Paylaşılan bellek alanının önemli bir bölümü paylaşılan arabellekler için ayrılır.

Başka bir avantajı, büyük sayfaların paylaşılan bellek alanının diske değişimini engellemesi ve bu da performansı daha da dengeler.

Öneriler

  • Önemli bellek kaynaklarına sahip sunucular için büyük sayfaları devre dışı bırakmaktan kaçının. Çok büyük sayfaları devre dışı bırakmak performansı tehlikeye atabilir.
  • Çok büyük sayfaları desteklemeyen daha küçük bir sunucuyla başlıyorsanız ancak bunu destekleyen bir sunucuya ölçeği artırmayı düşünüyorsanız, sorunsuz geçiş ve en iyi performans için ayarını konumunda TRY tutunhuge_pages.

Azure'a özgü notlar

Dört veya daha fazla sanal çekirdek içeren sunucular için, temel alınan işletim sisteminden büyük sayfalar otomatik olarak ayrılır. Bu özellik, dörtten az sanal çekirdeği olan sunucularda kullanılamaz. büyük sayfa sayısı, üzerinde yapılan değişiklikler shared_buffersde dahil olmak üzere paylaşılan bellek ayarları değiştirilirse otomatik olarak ayarlanır.

huge_page_size

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama İstenmesi gereken büyük sayfa boyutu.
Veri türü integer
Default value 0
İzin verilen değerler 0
Parametre türü salt okunur
Belgeler huge_page_size

logical_decoding_work_mem

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama Mantıksal kod çözme için kullanılacak en yüksek belleği ayarlar.
Veri türü integer
Default value 65536
İzin verilen değerler 64-2147483647
Parametre türü dynamic
Belgeler logical_decoding_work_mem

maintenance_work_mem

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama VACUUM, Create Index gibi bakım işlemleri için kullanılacak en yüksek belleği ayarlar.
Veri türü integer
Default value Sunucuya ayrılan kaynaklara (sanal çekirdekler, RAM veya disk alanı) bağlıdır.
İzin verilen değerler 1024-2097151
Parametre türü dynamic
Belgeler maintenance_work_mem

Açıklama

maintenance_work_mem PostgreSQL'deki bir yapılandırma parametresidir. , CREATE INDEXve ALTER TABLEgibi VACUUMbakım işlemleri için ayrılan bellek miktarını yönetir. 'nin aksine work_mem, sorgu işlemleri için bellek ayırmayı etkiler, maintenance_work_mem veritabanı yapısını koruyan ve en iyi duruma getiren görevler için ayrılmıştır.

Önemli noktalar

  • Vakum bellek üst sınırı: Ölü tanımlama demetlerinin temizlenmesini artırarak maintenance_work_memhızlandırmak istiyorsanız, ölü tanımlama grubu tanımlayıcılarını toplamak için yerleşik bir sınırlama olduğunu VACUUM unutmayın. Bu işlem için yalnızca 1 GB'a kadar bellek kullanabilir.
  • Otomatik vakum için bellek ayrımı: Otomatik vakum işlemlerinin autovacuum_work_mem bağımsız olarak kullandığı belleği denetlemek için ayarını kullanabilirsiniz. Bu ayar, öğesinin maintenance_work_membir alt kümesi olarak görev yapar. Diğer bakım görevleri ve veri tanımı işlemleri için bellek ayırmayı etkilemeden otomatik vakum işlevinin ne kadar bellek kullandığına karar vekleyebilirsiniz.

Azure'a özgü notlar

Sunucu parametresinin maintenance_work_mem varsayılan değeri, işlem için seçtiğiniz ürün adına göre esnek PostgreSQL için Azure Veritabanı sunucu örneğini sağladığınızda hesaplanır. Esnek sunucuyu destekleyen işlemde ürün seçiminde yapılan sonraki değişiklikler, o örneğin sunucu parametresi için maintenance_work_mem varsayılan değer üzerinde herhangi bir etkiye sahip olmayacaktır.

Bir örneğe atanan ürünü her değiştirdiğinizde, parametrenin değerini maintenance_work_mem aşağıdaki formüldeki değerlere göre de ayarlamanız gerekir.

değerini maintenance_work_mem hesaplamak için kullanılan formül: (long)(82.5 * ln(memoryGiB) + 40) * 1024.

Önceki formüle bağlı olarak, aşağıdaki tabloda sağlanan bellek miktarına bağlı olarak bu sunucu parametresinin ayarlanacağı değerler listelenmiştir:

Bellek boyutu maintenance_work_mem
2 GiB 99328 KiB
4 GiB 157696 KiB
8 GiB 216064 KiB
16 GiB 274432 KiB
32 GiB 332800 KiB
48 GiB 367616 KiB
64 GiB 392192 KiB
80 GiB 410624 KiB
128 GiB 450560 KiB
160 GiB 468992 KiB
192 GiB 484352 KiB
256 GiB 508928 KiB
384 GiB 542720 KiB
432 GiB 552960 KiB
672 GiB 590848 KiB

max_prepared_transactions

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama Eşzamanlı olarak hazırlanmış en fazla işlem sayısını ayarlar. Çoğaltma sunucusunu çalıştırırken, bu parametreyi birincil sunucudakiyle aynı veya daha yüksek bir değere ayarlamanız gerekir.
Veri türü integer
Default value 0
İzin verilen değerler 0-262143
Parametre türü static
Belgeler max_prepared_transactions

max_stack_depth

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama Maksimum yığın derinliğini kilobayt olarak ayarlar.
Veri türü integer
Default value 2048
İzin verilen değerler 2048
Parametre türü salt okunur
Belgeler max_stack_depth

min_dynamic_shared_memory

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama Başlangıçta ayrılmış dinamik paylaşılan bellek miktarı.
Veri türü integer
Default value 0
İzin verilen değerler 0
Parametre türü salt okunur
Belgeler min_dynamic_shared_memory

shared_buffers

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama Sunucu tarafından kullanılan paylaşılan bellek arabelleklerinin sayısını ayarlar. Birim 8 kb'dir. İzin verilen değerler kullanılabilir belleğin %10 - %75'i aralığındadır.
Veri türü integer
Default value Sunucuya ayrılan kaynaklara (sanal çekirdekler, RAM veya disk alanı) bağlıdır.
İzin verilen değerler 16-1073741823
Parametre türü static
Belgeler shared_buffers

Açıklama

Yapılandırma shared_buffers parametresi, verileri arabelleğe almak için PostgreSQL veritabanına ayrılan sistem belleği miktarını belirler. Tüm veritabanı işlemleri tarafından erişilebilen merkezi bir bellek havuzu görevi görür.

Veri gerektiğinde, veritabanı işlemi önce paylaşılan arabelleği denetler. Gerekli veriler varsa, hızlı bir şekilde alınır ve daha fazla zaman alan bir disk okumasını atlar. Paylaşılan arabellekler, veritabanı işlemleriyle disk arasında bir aracı görevi görür ve gerekli G/Ç işlemlerinin sayısını etkili bir şekilde azaltır.

Azure'a özgü notlar

Sunucu parametresinin shared_buffers varsayılan değeri, işlem için seçtiğiniz ürün adına göre esnek PostgreSQL için Azure Veritabanı sunucu örneğini sağladığınızda hesaplanır. Esnek sunucuyu destekleyen işlemde ürün seçiminde yapılan sonraki değişiklikler, bu örneğin sunucu parametresi için shared_buffers varsayılan değer üzerinde herhangi bir etkiye sahip değildir.

Bir örneğe atanan ürünü her değiştirdiğinizde, parametrenin değerini shared_buffers aşağıdaki formüllerdeki değerlere göre de ayarlamanız gerekir.

En fazla 2 GiB belleğe sahip sanal makineler için değerini shared_buffers hesaplamak için kullanılan formül olur memoryGib * 16384.

2 GiB'den fazla sanal makine için değerini shared_buffers hesaplamak için kullanılan formül şeklindedir memoryGib * 32768.

Önceki formüle bağlı olarak, aşağıdaki tabloda sağlanan bellek miktarına bağlı olarak bu sunucu parametresinin ayarlanacağı değerler listelenmiştir:

Bellek boyutu shared_buffers
2 GiB 32768
4 GiB 131072
8 GiB 262144
16 GiB 524288
32 GiB 1048576
48 GiB 1572864
64 GiB 2097152
80 GiB 2621440
128 GiB 4194304
160 GiB 5242880
192 GiB 6291456
256 GiB 8388608
384 GiB 12582912
432 GiB 14155776
672 GiB 22020096

shared_memory_type

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama Ana paylaşılan bellek bölgesi için kullanılan paylaşılan bellek uygulamasını seçer.
Veri türü listeleme
Default value mmap
İzin verilen değerler mmap
Parametre türü salt okunur
Belgeler shared_memory_type

temp_buffers

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama Her veritabanı oturumu tarafından kullanılan en fazla geçici arabellek sayısını ayarlar.
Veri türü integer
Default value 1024
İzin verilen değerler 100-1073741823
Parametre türü dynamic
Belgeler temp_buffers

vacuum_buffer_usage_limit

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama VACUUM, ANALYZE ve autovacuum için arabellek havuzu boyutunu ayarlar.
Veri türü integer
Default value 256
İzin verilen değerler 0-16777216
Parametre türü dynamic
Belgeler vacuum_buffer_usage_limit

work_mem

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama Geçici disk dosyalarına yazmadan önce iç sıralama işlemleri ve karma tabloları tarafından kullanılacak bellek miktarını ayarlar.
Veri türü integer
Default value 4096
İzin verilen değerler 4096-2097151
Parametre türü dynamic
Belgeler work_mem

Açıklama

work_mem PostgreSQL'deki parametresi, her veritabanı oturumunun özel bellek alanındaki belirli iç işlemler için ayrılan bellek miktarını denetler. Bu işlemlere örnek olarak sıralama ve karma oluşturma verilebilir.

Paylaşılan bellek alanında yer alan paylaşılan arabelleklerin aksine, work_mem oturum başına veya sorgu başına özel bellek alanında ayrılır. Yeterli work_mem bir boyut ayarlayarak bu işlemlerin verimliliğini önemli ölçüde artırabilir ve diske geçici veri yazma gereksinimini azaltabilirsiniz.

Önemli noktalar

  • Özel bağlantı belleği: work_mem her veritabanı oturumunun kullandığı özel belleğin bir parçasıdır. Bu bellek, kullanılan paylaşılan bellek alanından shared_buffers farklıdır.
  • Sorguya özgü kullanım: Tüm oturumlar veya sorgular kullanmaz work_mem. gibi SELECT 1 basit sorguların gerektirme work_memolasılığı düşüktür. Ancak, sıralama veya karma oluşturma gibi işlemleri içeren karmaşık sorgular work_membir veya birden çok öbeği tüketebilir.
  • Paralel işlemler: Birden çok paralel arka uca yayılan sorgular için her arka uç bir veya birden çok öbek work_memkullanabilir.

work_mem izleme ve ayarlama

Öncelikle sıralama veya karma işlemleriyle ilgili sorgu yürütme sürelerinin yavaş olması durumunda sisteminizin performansını sürekli izlemek ve gerektiği gibi ayarlamak work_mem önemlidir. Azure portalında bulunan araçları kullanarak performansı izlemenin yolları şunlardır:

  • Sorgu performansı içgörüleri: Geçici dosyalar oluşturan sorguları tanımlamak için Geçici dosyalara göre en çok kullanılan sorgular sekmesini denetleyin. Bu durum, öğesinin artırılmasına work_memyönelik olası bir gereksinim olduğunu gösterir.
  • Sorun giderme kılavuzları: Sorunlu sorguları tanımlamak için sorun giderme kılavuzlarındaki Yüksek geçici dosyalar sekmesini kullanın.
Ayrıntılı ayarlama

Parametresini work_mem yönetirken, genel bir değer ayarlamak yerine ayrıntılı ayarlama yaklaşımını benimsemek genellikle daha verimli olur. Bu yaklaşım, işlemlerin ve kullanıcıların belirli gereksinimlerine göre bellek ayırmanızı sağlar. Ayrıca yetersiz bellek sorunlarıyla karşılaşma riskini de en aza indirir. Bu konuda şu şekilde devam edebilirsiniz:

  • Kullanıcı düzeyi: Belirli bir kullanıcı öncelikle yoğun bellek kullanan toplama veya raporlama görevlerinde yer alıyorsa, söz konusu kullanıcının değerini özelleştirmeyi work_mem göz önünde bulundurun. ALTER ROLE Kullanıcının işlemlerinin performansını artırmak için komutunu kullanın.

  • İşlev/yordam düzeyi: Belirli işlevler veya yordamlar önemli miktarda geçici dosya oluşturuyorsa, belirli işlev veya yordam düzeyinde değeri artırmak work_mem yararlı olabilir. Bu işlemlere ALTER FUNCTION özel olarak daha fazla bellek ayırmak için veya ALTER PROCEDURE komutunu kullanın.

  • Veritabanı düzeyi: Yalnızca belirli veritabanları yüksek sayıda geçici dosya oluşturuyorsa veritabanı düzeyinde değişiklik work_mem yapın.

  • Genel düzey: Sisteminizin analizi çoğu sorgunun küçük geçici dosyalar oluşturduğunu, ancak yalnızca birkaçının büyük dosyalar oluşturduğunu gösterirse, değeri genel olarak artırmak work_mem akıllıca olabilir. Bu eylem sorguların çoğunun bellekte işlenmesini kolaylaştırır, böylece disk tabanlı işlemlerden kaçınabilir ve verimliliği artırabilirsiniz. Ancak, artan work_mem değeri işleyebileceğinden emin olmak için her zaman dikkatli olun ve sunucunuzdaki bellek kullanımını izleyin.

Sıralama işlemleri için en düşük work_mem değerini belirleme

Özellikle sıralama işlemi sırasında geçici disk dosyaları oluşturan belirli bir sorgunun en düşük work_mem değerini bulmak için, sorgu yürütme sırasında oluşturulan geçici dosya boyutunu göz önünde bulundurarak başlayın. Örneğin, bir sorgu 20 MB geçici bir dosya oluşturuyorsa:

  1. psql veya tercih ettiğiniz PostgreSQL istemcisini kullanarak veritabanınıza bağlanın.
  2. Bellekte işlenirken ek üst bilgileri hesaba katmak için 20 MB'tan biraz daha yüksek bir başlangıç work_mem değeri ayarlayın. Şunun gibi bir komut kullanın: SET work_mem TO '25MB'.
  3. Aynı oturumda sorunlu sorguda komutunu çalıştırın EXPLAIN ANALYZE .
  4. için "Sort Method: quicksort Memory: xkB"çıktıyı gözden geçirin. değerini gösteriyorsa "external merge Disk: xkB", değeri artımlı olarak yükseltin work_mem ve görünene kadar "quicksort Memory" yeniden test edin. Sorgunun "quicksort Memory" artık bellekte çalıştığını belirten sinyallerin görünümü.
  5. Bu yöntem aracılığıyla değeri belirledikten sonra, operasyonel gereksinimlerinize uyacak şekilde genel olarak veya daha ayrıntılı düzeylerde (daha önce açıklandığı gibi) uygulayabilirsiniz.

autovacuum_work_mem

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama Her otomatik vakum çalışan işlemi tarafından kullanılacak en yüksek belleği ayarlar.
Veri türü integer
Default value -1
İzin verilen değerler -1-2097151
Parametre türü dynamic
Belgeler autovacuum_work_mem

dynamic_shared_memory_type

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama Kullanılan dinamik paylaşılan bellek uygulamasını seçer.
Veri türü listeleme
Default value posix
İzin verilen değerler posix
Parametre türü salt okunur
Belgeler dynamic_shared_memory_type

hash_mem_multiplier

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama Karma tablolar için kullanılacak work_mem katı.
Veri türü sayısal
Default value 2
İzin verilen değerler 1-1000
Parametre türü dynamic
Belgeler hash_mem_multiplier

huge_pages

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama Büyük bellek sayfalarının kullanımını etkinleştirir/devre dışı bırakır. Bu ayar, 4'ten az sanal çekirdeği olan sunucular için geçerli değildir.
Veri türü listeleme
Default value try
İzin verilen değerler on,off,try
Parametre türü static
Belgeler huge_pages

Açıklama

Büyük sayfalar, belleğin daha büyük bloklarda yönetilmesini sağlayan bir özelliktir. Standart 4 KB sayfa yerine genellikle 2 MB'a kadar blokları yönetebilirsiniz.

Çok büyük sayfaların kullanılması, CPU'ları etkili bir şekilde boşaltan performans avantajları sunabilir:

  • Daha az çeviri lookaside buffer (TLB) hatası gibi bellek yönetimi görevleriyle ilişkili ek yükü azaltır.
  • Bellek yönetimi için gereken süreyi kısaltır.

Özellikle, PostgreSQL'de büyük sayfaları yalnızca paylaşılan bellek alanı için kullanabilirsiniz. Paylaşılan bellek alanının önemli bir bölümü paylaşılan arabellekler için ayrılır.

Başka bir avantajı, büyük sayfaların paylaşılan bellek alanının diske değişimini engellemesi ve bu da performansı daha da dengeler.

Öneriler

  • Önemli bellek kaynaklarına sahip sunucular için büyük sayfaları devre dışı bırakmaktan kaçının. Çok büyük sayfaları devre dışı bırakmak performansı tehlikeye atabilir.
  • Çok büyük sayfaları desteklemeyen daha küçük bir sunucuyla başlıyorsanız ancak bunu destekleyen bir sunucuya ölçeği artırmayı düşünüyorsanız, sorunsuz geçiş ve en iyi performans için ayarını konumunda TRY tutunhuge_pages.

Azure'a özgü notlar

Dört veya daha fazla sanal çekirdek içeren sunucular için, temel alınan işletim sisteminden büyük sayfalar otomatik olarak ayrılır. Bu özellik, dörtten az sanal çekirdeği olan sunucularda kullanılamaz. büyük sayfa sayısı, üzerinde yapılan değişiklikler shared_buffersde dahil olmak üzere paylaşılan bellek ayarları değiştirilirse otomatik olarak ayarlanır.

huge_page_size

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama İstenmesi gereken büyük sayfa boyutu.
Veri türü integer
Default value 0
İzin verilen değerler 0
Parametre türü salt okunur
Belgeler huge_page_size

logical_decoding_work_mem

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama Mantıksal kod çözme için kullanılacak en yüksek belleği ayarlar.
Veri türü integer
Default value 65536
İzin verilen değerler 64-2147483647
Parametre türü dynamic
Belgeler logical_decoding_work_mem

maintenance_work_mem

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama VACUUM, Create Index gibi bakım işlemleri için kullanılacak en yüksek belleği ayarlar.
Veri türü integer
Default value Sunucuya ayrılan kaynaklara (sanal çekirdekler, RAM veya disk alanı) bağlıdır.
İzin verilen değerler 1024-2097151
Parametre türü dynamic
Belgeler maintenance_work_mem

Açıklama

maintenance_work_mem PostgreSQL'deki bir yapılandırma parametresidir. , CREATE INDEXve ALTER TABLEgibi VACUUMbakım işlemleri için ayrılan bellek miktarını yönetir. 'nin aksine work_mem, sorgu işlemleri için bellek ayırmayı etkiler, maintenance_work_mem veritabanı yapısını koruyan ve en iyi duruma getiren görevler için ayrılmıştır.

Önemli noktalar

  • Vakum bellek üst sınırı: Ölü tanımlama demetlerinin temizlenmesini artırarak maintenance_work_memhızlandırmak istiyorsanız, ölü tanımlama grubu tanımlayıcılarını toplamak için yerleşik bir sınırlama olduğunu VACUUM unutmayın. Bu işlem için yalnızca 1 GB'a kadar bellek kullanabilir.
  • Otomatik vakum için bellek ayrımı: Otomatik vakum işlemlerinin autovacuum_work_mem bağımsız olarak kullandığı belleği denetlemek için ayarını kullanabilirsiniz. Bu ayar, öğesinin maintenance_work_membir alt kümesi olarak görev yapar. Diğer bakım görevleri ve veri tanımı işlemleri için bellek ayırmayı etkilemeden otomatik vakum işlevinin ne kadar bellek kullandığına karar vekleyebilirsiniz.

Azure'a özgü notlar

Sunucu parametresinin maintenance_work_mem varsayılan değeri, işlem için seçtiğiniz ürün adına göre esnek PostgreSQL için Azure Veritabanı sunucu örneğini sağladığınızda hesaplanır. Esnek sunucuyu destekleyen işlemde ürün seçiminde yapılan sonraki değişiklikler, o örneğin sunucu parametresi için maintenance_work_mem varsayılan değer üzerinde herhangi bir etkiye sahip olmayacaktır.

Bir örneğe atanan ürünü her değiştirdiğinizde, parametrenin değerini maintenance_work_mem aşağıdaki formüldeki değerlere göre de ayarlamanız gerekir.

değerini maintenance_work_mem hesaplamak için kullanılan formül: (long)(82.5 * ln(memoryGiB) + 40) * 1024.

Önceki formüle bağlı olarak, aşağıdaki tabloda sağlanan bellek miktarına bağlı olarak bu sunucu parametresinin ayarlanacağı değerler listelenmiştir:

Bellek boyutu maintenance_work_mem
2 GiB 99328 KiB
4 GiB 157696 KiB
8 GiB 216064 KiB
16 GiB 274432 KiB
32 GiB 332800 KiB
48 GiB 367616 KiB
64 GiB 392192 KiB
80 GiB 410624 KiB
128 GiB 450560 KiB
160 GiB 468992 KiB
192 GiB 484352 KiB
256 GiB 508928 KiB
384 GiB 542720 KiB
432 GiB 552960 KiB
672 GiB 590848 KiB

max_prepared_transactions

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama Eşzamanlı olarak hazırlanmış en fazla işlem sayısını ayarlar. Çoğaltma sunucusunu çalıştırırken, bu parametreyi birincil sunucudakiyle aynı veya daha yüksek bir değere ayarlamanız gerekir.
Veri türü integer
Default value 0
İzin verilen değerler 0-262143
Parametre türü static
Belgeler max_prepared_transactions

max_stack_depth

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama Maksimum yığın derinliğini kilobayt olarak ayarlar.
Veri türü integer
Default value 2048
İzin verilen değerler 2048
Parametre türü salt okunur
Belgeler max_stack_depth

min_dynamic_shared_memory

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama Başlangıçta ayrılmış dinamik paylaşılan bellek miktarı.
Veri türü integer
Default value 0
İzin verilen değerler 0
Parametre türü salt okunur
Belgeler min_dynamic_shared_memory

shared_buffers

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama Sunucu tarafından kullanılan paylaşılan bellek arabelleklerinin sayısını ayarlar. Birim 8 kb'dir. İzin verilen değerler kullanılabilir belleğin %10 - %75'i aralığındadır.
Veri türü integer
Default value Sunucuya ayrılan kaynaklara (sanal çekirdekler, RAM veya disk alanı) bağlıdır.
İzin verilen değerler 16-1073741823
Parametre türü static
Belgeler shared_buffers

Açıklama

Yapılandırma shared_buffers parametresi, verileri arabelleğe almak için PostgreSQL veritabanına ayrılan sistem belleği miktarını belirler. Tüm veritabanı işlemleri tarafından erişilebilen merkezi bir bellek havuzu görevi görür.

Veri gerektiğinde, veritabanı işlemi önce paylaşılan arabelleği denetler. Gerekli veriler varsa, hızlı bir şekilde alınır ve daha fazla zaman alan bir disk okumasını atlar. Paylaşılan arabellekler, veritabanı işlemleriyle disk arasında bir aracı görevi görür ve gerekli G/Ç işlemlerinin sayısını etkili bir şekilde azaltır.

Azure'a özgü notlar

Sunucu parametresinin shared_buffers varsayılan değeri, işlem için seçtiğiniz ürün adına göre esnek PostgreSQL için Azure Veritabanı sunucu örneğini sağladığınızda hesaplanır. Esnek sunucuyu destekleyen işlemde ürün seçiminde yapılan sonraki değişiklikler, bu örneğin sunucu parametresi için shared_buffers varsayılan değer üzerinde herhangi bir etkiye sahip değildir.

Bir örneğe atanan ürünü her değiştirdiğinizde, parametrenin değerini shared_buffers aşağıdaki formüllerdeki değerlere göre de ayarlamanız gerekir.

En fazla 2 GiB belleğe sahip sanal makineler için değerini shared_buffers hesaplamak için kullanılan formül olur memoryGib * 16384.

2 GiB'den fazla sanal makine için değerini shared_buffers hesaplamak için kullanılan formül şeklindedir memoryGib * 32768.

Önceki formüle bağlı olarak, aşağıdaki tabloda sağlanan bellek miktarına bağlı olarak bu sunucu parametresinin ayarlanacağı değerler listelenmiştir:

Bellek boyutu shared_buffers
2 GiB 32768
4 GiB 131072
8 GiB 262144
16 GiB 524288
32 GiB 1048576
48 GiB 1572864
64 GiB 2097152
80 GiB 2621440
128 GiB 4194304
160 GiB 5242880
192 GiB 6291456
256 GiB 8388608
384 GiB 12582912
432 GiB 14155776
672 GiB 22020096

shared_memory_type

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama Ana paylaşılan bellek bölgesi için kullanılan paylaşılan bellek uygulamasını seçer.
Veri türü listeleme
Default value mmap
İzin verilen değerler mmap
Parametre türü salt okunur
Belgeler shared_memory_type

temp_buffers

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama Her veritabanı oturumu tarafından kullanılan en fazla geçici arabellek sayısını ayarlar.
Veri türü integer
Default value 1024
İzin verilen değerler 100-1073741823
Parametre türü dynamic
Belgeler temp_buffers

work_mem

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama Geçici disk dosyalarına yazmadan önce iç sıralama işlemleri ve karma tabloları tarafından kullanılacak bellek miktarını ayarlar.
Veri türü integer
Default value 4096
İzin verilen değerler 4096-2097151
Parametre türü dynamic
Belgeler work_mem

Açıklama

work_mem PostgreSQL'deki parametresi, her veritabanı oturumunun özel bellek alanındaki belirli iç işlemler için ayrılan bellek miktarını denetler. Bu işlemlere örnek olarak sıralama ve karma oluşturma verilebilir.

Paylaşılan bellek alanında yer alan paylaşılan arabelleklerin aksine, work_mem oturum başına veya sorgu başına özel bellek alanında ayrılır. Yeterli work_mem bir boyut ayarlayarak bu işlemlerin verimliliğini önemli ölçüde artırabilir ve diske geçici veri yazma gereksinimini azaltabilirsiniz.

Önemli noktalar

  • Özel bağlantı belleği: work_mem her veritabanı oturumunun kullandığı özel belleğin bir parçasıdır. Bu bellek, kullanılan paylaşılan bellek alanından shared_buffers farklıdır.
  • Sorguya özgü kullanım: Tüm oturumlar veya sorgular kullanmaz work_mem. gibi SELECT 1 basit sorguların gerektirme work_memolasılığı düşüktür. Ancak, sıralama veya karma oluşturma gibi işlemleri içeren karmaşık sorgular work_membir veya birden çok öbeği tüketebilir.
  • Paralel işlemler: Birden çok paralel arka uca yayılan sorgular için her arka uç bir veya birden çok öbek work_memkullanabilir.

work_mem izleme ve ayarlama

Öncelikle sıralama veya karma işlemleriyle ilgili sorgu yürütme sürelerinin yavaş olması durumunda sisteminizin performansını sürekli izlemek ve gerektiği gibi ayarlamak work_mem önemlidir. Azure portalında bulunan araçları kullanarak performansı izlemenin yolları şunlardır:

  • Sorgu performansı içgörüleri: Geçici dosyalar oluşturan sorguları tanımlamak için Geçici dosyalara göre en çok kullanılan sorgular sekmesini denetleyin. Bu durum, öğesinin artırılmasına work_memyönelik olası bir gereksinim olduğunu gösterir.
  • Sorun giderme kılavuzları: Sorunlu sorguları tanımlamak için sorun giderme kılavuzlarındaki Yüksek geçici dosyalar sekmesini kullanın.
Ayrıntılı ayarlama

Parametresini work_mem yönetirken, genel bir değer ayarlamak yerine ayrıntılı ayarlama yaklaşımını benimsemek genellikle daha verimli olur. Bu yaklaşım, işlemlerin ve kullanıcıların belirli gereksinimlerine göre bellek ayırmanızı sağlar. Ayrıca yetersiz bellek sorunlarıyla karşılaşma riskini de en aza indirir. Bu konuda şu şekilde devam edebilirsiniz:

  • Kullanıcı düzeyi: Belirli bir kullanıcı öncelikle yoğun bellek kullanan toplama veya raporlama görevlerinde yer alıyorsa, söz konusu kullanıcının değerini özelleştirmeyi work_mem göz önünde bulundurun. ALTER ROLE Kullanıcının işlemlerinin performansını artırmak için komutunu kullanın.

  • İşlev/yordam düzeyi: Belirli işlevler veya yordamlar önemli miktarda geçici dosya oluşturuyorsa, belirli işlev veya yordam düzeyinde değeri artırmak work_mem yararlı olabilir. Bu işlemlere ALTER FUNCTION özel olarak daha fazla bellek ayırmak için veya ALTER PROCEDURE komutunu kullanın.

  • Veritabanı düzeyi: Yalnızca belirli veritabanları yüksek sayıda geçici dosya oluşturuyorsa veritabanı düzeyinde değişiklik work_mem yapın.

  • Genel düzey: Sisteminizin analizi çoğu sorgunun küçük geçici dosyalar oluşturduğunu, ancak yalnızca birkaçının büyük dosyalar oluşturduğunu gösterirse, değeri genel olarak artırmak work_mem akıllıca olabilir. Bu eylem sorguların çoğunun bellekte işlenmesini kolaylaştırır, böylece disk tabanlı işlemlerden kaçınabilir ve verimliliği artırabilirsiniz. Ancak, artan work_mem değeri işleyebileceğinden emin olmak için her zaman dikkatli olun ve sunucunuzdaki bellek kullanımını izleyin.

Sıralama işlemleri için en düşük work_mem değerini belirleme

Özellikle sıralama işlemi sırasında geçici disk dosyaları oluşturan belirli bir sorgunun en düşük work_mem değerini bulmak için, sorgu yürütme sırasında oluşturulan geçici dosya boyutunu göz önünde bulundurarak başlayın. Örneğin, bir sorgu 20 MB geçici bir dosya oluşturuyorsa:

  1. psql veya tercih ettiğiniz PostgreSQL istemcisini kullanarak veritabanınıza bağlanın.
  2. Bellekte işlenirken ek üst bilgileri hesaba katmak için 20 MB'tan biraz daha yüksek bir başlangıç work_mem değeri ayarlayın. Şunun gibi bir komut kullanın: SET work_mem TO '25MB'.
  3. Aynı oturumda sorunlu sorguda komutunu çalıştırın EXPLAIN ANALYZE .
  4. için "Sort Method: quicksort Memory: xkB"çıktıyı gözden geçirin. değerini gösteriyorsa "external merge Disk: xkB", değeri artımlı olarak yükseltin work_mem ve görünene kadar "quicksort Memory" yeniden test edin. Sorgunun "quicksort Memory" artık bellekte çalıştığını belirten sinyallerin görünümü.
  5. Bu yöntem aracılığıyla değeri belirledikten sonra, operasyonel gereksinimlerinize uyacak şekilde genel olarak veya daha ayrıntılı düzeylerde (daha önce açıklandığı gibi) uygulayabilirsiniz.

autovacuum_work_mem

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama Her otomatik vakum çalışan işlemi tarafından kullanılacak en yüksek belleği ayarlar.
Veri türü integer
Default value -1
İzin verilen değerler -1-2097151
Parametre türü dynamic
Belgeler autovacuum_work_mem

dynamic_shared_memory_type

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama Kullanılan dinamik paylaşılan bellek uygulamasını seçer.
Veri türü listeleme
Default value posix
İzin verilen değerler posix
Parametre türü salt okunur
Belgeler dynamic_shared_memory_type

hash_mem_multiplier

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama Karma tablolar için kullanılacak work_mem katı.
Veri türü sayısal
Default value 1
İzin verilen değerler 1-1000
Parametre türü dynamic
Belgeler hash_mem_multiplier

huge_pages

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama Büyük bellek sayfalarının kullanımını etkinleştirir/devre dışı bırakır. Bu ayar, 4'ten az sanal çekirdeği olan sunucular için geçerli değildir.
Veri türü listeleme
Default value try
İzin verilen değerler on,off,try
Parametre türü static
Belgeler huge_pages

Açıklama

Büyük sayfalar, belleğin daha büyük bloklarda yönetilmesini sağlayan bir özelliktir. Standart 4 KB sayfa yerine genellikle 2 MB'a kadar blokları yönetebilirsiniz.

Çok büyük sayfaların kullanılması, CPU'ları etkili bir şekilde boşaltan performans avantajları sunabilir:

  • Daha az çeviri lookaside buffer (TLB) hatası gibi bellek yönetimi görevleriyle ilişkili ek yükü azaltır.
  • Bellek yönetimi için gereken süreyi kısaltır.

Özellikle, PostgreSQL'de büyük sayfaları yalnızca paylaşılan bellek alanı için kullanabilirsiniz. Paylaşılan bellek alanının önemli bir bölümü paylaşılan arabellekler için ayrılır.

Başka bir avantajı, büyük sayfaların paylaşılan bellek alanının diske değişimini engellemesi ve bu da performansı daha da dengeler.

Öneriler

  • Önemli bellek kaynaklarına sahip sunucular için büyük sayfaları devre dışı bırakmaktan kaçının. Çok büyük sayfaları devre dışı bırakmak performansı tehlikeye atabilir.
  • Çok büyük sayfaları desteklemeyen daha küçük bir sunucuyla başlıyorsanız ancak bunu destekleyen bir sunucuya ölçeği artırmayı düşünüyorsanız, sorunsuz geçiş ve en iyi performans için ayarını konumunda TRY tutunhuge_pages.

Azure'a özgü notlar

Dört veya daha fazla sanal çekirdek içeren sunucular için, temel alınan işletim sisteminden büyük sayfalar otomatik olarak ayrılır. Bu özellik, dörtten az sanal çekirdeği olan sunucularda kullanılamaz. büyük sayfa sayısı, üzerinde yapılan değişiklikler shared_buffersde dahil olmak üzere paylaşılan bellek ayarları değiştirilirse otomatik olarak ayarlanır.

huge_page_size

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama İstenmesi gereken büyük sayfa boyutu.
Veri türü integer
Default value 0
İzin verilen değerler 0
Parametre türü salt okunur
Belgeler huge_page_size

logical_decoding_work_mem

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama Mantıksal kod çözme için kullanılacak en yüksek belleği ayarlar.
Veri türü integer
Default value 65536
İzin verilen değerler 64-2147483647
Parametre türü dynamic
Belgeler logical_decoding_work_mem

maintenance_work_mem

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama VACUUM, Create Index gibi bakım işlemleri için kullanılacak en yüksek belleği ayarlar.
Veri türü integer
Default value Sunucuya ayrılan kaynaklara (sanal çekirdekler, RAM veya disk alanı) bağlıdır.
İzin verilen değerler 1024-2097151
Parametre türü dynamic
Belgeler maintenance_work_mem

Açıklama

maintenance_work_mem PostgreSQL'deki bir yapılandırma parametresidir. , CREATE INDEXve ALTER TABLEgibi VACUUMbakım işlemleri için ayrılan bellek miktarını yönetir. 'nin aksine work_mem, sorgu işlemleri için bellek ayırmayı etkiler, maintenance_work_mem veritabanı yapısını koruyan ve en iyi duruma getiren görevler için ayrılmıştır.

Önemli noktalar

  • Vakum bellek üst sınırı: Ölü tanımlama demetlerinin temizlenmesini artırarak maintenance_work_memhızlandırmak istiyorsanız, ölü tanımlama grubu tanımlayıcılarını toplamak için yerleşik bir sınırlama olduğunu VACUUM unutmayın. Bu işlem için yalnızca 1 GB'a kadar bellek kullanabilir.
  • Otomatik vakum için bellek ayrımı: Otomatik vakum işlemlerinin autovacuum_work_mem bağımsız olarak kullandığı belleği denetlemek için ayarını kullanabilirsiniz. Bu ayar, öğesinin maintenance_work_membir alt kümesi olarak görev yapar. Diğer bakım görevleri ve veri tanımı işlemleri için bellek ayırmayı etkilemeden otomatik vakum işlevinin ne kadar bellek kullandığına karar vekleyebilirsiniz.

Azure'a özgü notlar

Sunucu parametresinin maintenance_work_mem varsayılan değeri, işlem için seçtiğiniz ürün adına göre esnek PostgreSQL için Azure Veritabanı sunucu örneğini sağladığınızda hesaplanır. Esnek sunucuyu destekleyen işlemde ürün seçiminde yapılan sonraki değişiklikler, o örneğin sunucu parametresi için maintenance_work_mem varsayılan değer üzerinde herhangi bir etkiye sahip olmayacaktır.

Bir örneğe atanan ürünü her değiştirdiğinizde, parametrenin değerini maintenance_work_mem aşağıdaki formüldeki değerlere göre de ayarlamanız gerekir.

değerini maintenance_work_mem hesaplamak için kullanılan formül: (long)(82.5 * ln(memoryGiB) + 40) * 1024.

Önceki formüle bağlı olarak, aşağıdaki tabloda sağlanan bellek miktarına bağlı olarak bu sunucu parametresinin ayarlanacağı değerler listelenmiştir:

Bellek boyutu maintenance_work_mem
2 GiB 99328 KiB
4 GiB 157696 KiB
8 GiB 216064 KiB
16 GiB 274432 KiB
32 GiB 332800 KiB
48 GiB 367616 KiB
64 GiB 392192 KiB
80 GiB 410624 KiB
128 GiB 450560 KiB
160 GiB 468992 KiB
192 GiB 484352 KiB
256 GiB 508928 KiB
384 GiB 542720 KiB
432 GiB 552960 KiB
672 GiB 590848 KiB

max_prepared_transactions

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama Eşzamanlı olarak hazırlanmış en fazla işlem sayısını ayarlar. Çoğaltma sunucusunu çalıştırırken, bu parametreyi birincil sunucudakiyle aynı veya daha yüksek bir değere ayarlamanız gerekir.
Veri türü integer
Default value 0
İzin verilen değerler 0-262143
Parametre türü static
Belgeler max_prepared_transactions

max_stack_depth

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama Maksimum yığın derinliğini kilobayt olarak ayarlar.
Veri türü integer
Default value 2048
İzin verilen değerler 2048
Parametre türü salt okunur
Belgeler max_stack_depth

min_dynamic_shared_memory

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama Başlangıçta ayrılmış dinamik paylaşılan bellek miktarı.
Veri türü integer
Default value 0
İzin verilen değerler 0
Parametre türü salt okunur
Belgeler min_dynamic_shared_memory

shared_buffers

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama Sunucu tarafından kullanılan paylaşılan bellek arabelleklerinin sayısını ayarlar. Birim 8 kb'dir. İzin verilen değerler kullanılabilir belleğin %10 - %75'i aralığındadır.
Veri türü integer
Default value Sunucuya ayrılan kaynaklara (sanal çekirdekler, RAM veya disk alanı) bağlıdır.
İzin verilen değerler 16-1073741823
Parametre türü static
Belgeler shared_buffers

Açıklama

Yapılandırma shared_buffers parametresi, verileri arabelleğe almak için PostgreSQL veritabanına ayrılan sistem belleği miktarını belirler. Tüm veritabanı işlemleri tarafından erişilebilen merkezi bir bellek havuzu görevi görür.

Veri gerektiğinde, veritabanı işlemi önce paylaşılan arabelleği denetler. Gerekli veriler varsa, hızlı bir şekilde alınır ve daha fazla zaman alan bir disk okumasını atlar. Paylaşılan arabellekler, veritabanı işlemleriyle disk arasında bir aracı görevi görür ve gerekli G/Ç işlemlerinin sayısını etkili bir şekilde azaltır.

Azure'a özgü notlar

Sunucu parametresinin shared_buffers varsayılan değeri, işlem için seçtiğiniz ürün adına göre esnek PostgreSQL için Azure Veritabanı sunucu örneğini sağladığınızda hesaplanır. Esnek sunucuyu destekleyen işlemde ürün seçiminde yapılan sonraki değişiklikler, bu örneğin sunucu parametresi için shared_buffers varsayılan değer üzerinde herhangi bir etkiye sahip değildir.

Bir örneğe atanan ürünü her değiştirdiğinizde, parametrenin değerini shared_buffers aşağıdaki formüllerdeki değerlere göre de ayarlamanız gerekir.

En fazla 2 GiB belleğe sahip sanal makineler için değerini shared_buffers hesaplamak için kullanılan formül olur memoryGib * 16384.

2 GiB'den fazla sanal makine için değerini shared_buffers hesaplamak için kullanılan formül şeklindedir memoryGib * 32768.

Önceki formüle bağlı olarak, aşağıdaki tabloda sağlanan bellek miktarına bağlı olarak bu sunucu parametresinin ayarlanacağı değerler listelenmiştir:

Bellek boyutu shared_buffers
2 GiB 32768
4 GiB 131072
8 GiB 262144
16 GiB 524288
32 GiB 1048576
48 GiB 1572864
64 GiB 2097152
80 GiB 2621440
128 GiB 4194304
160 GiB 5242880
192 GiB 6291456
256 GiB 8388608
384 GiB 12582912
432 GiB 14155776
672 GiB 22020096

shared_memory_type

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama Ana paylaşılan bellek bölgesi için kullanılan paylaşılan bellek uygulamasını seçer.
Veri türü listeleme
Default value mmap
İzin verilen değerler mmap
Parametre türü salt okunur
Belgeler shared_memory_type

temp_buffers

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama Her veritabanı oturumu tarafından kullanılan en fazla geçici arabellek sayısını ayarlar.
Veri türü integer
Default value 1024
İzin verilen değerler 100-1073741823
Parametre türü dynamic
Belgeler temp_buffers

work_mem

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama Geçici disk dosyalarına yazmadan önce iç sıralama işlemleri ve karma tabloları tarafından kullanılacak bellek miktarını ayarlar.
Veri türü integer
Default value 4096
İzin verilen değerler 4096-2097151
Parametre türü dynamic
Belgeler work_mem

Açıklama

work_mem PostgreSQL'deki parametresi, her veritabanı oturumunun özel bellek alanındaki belirli iç işlemler için ayrılan bellek miktarını denetler. Bu işlemlere örnek olarak sıralama ve karma oluşturma verilebilir.

Paylaşılan bellek alanında yer alan paylaşılan arabelleklerin aksine, work_mem oturum başına veya sorgu başına özel bellek alanında ayrılır. Yeterli work_mem bir boyut ayarlayarak bu işlemlerin verimliliğini önemli ölçüde artırabilir ve diske geçici veri yazma gereksinimini azaltabilirsiniz.

Önemli noktalar

  • Özel bağlantı belleği: work_mem her veritabanı oturumunun kullandığı özel belleğin bir parçasıdır. Bu bellek, kullanılan paylaşılan bellek alanından shared_buffers farklıdır.
  • Sorguya özgü kullanım: Tüm oturumlar veya sorgular kullanmaz work_mem. gibi SELECT 1 basit sorguların gerektirme work_memolasılığı düşüktür. Ancak, sıralama veya karma oluşturma gibi işlemleri içeren karmaşık sorgular work_membir veya birden çok öbeği tüketebilir.
  • Paralel işlemler: Birden çok paralel arka uca yayılan sorgular için her arka uç bir veya birden çok öbek work_memkullanabilir.

work_mem izleme ve ayarlama

Öncelikle sıralama veya karma işlemleriyle ilgili sorgu yürütme sürelerinin yavaş olması durumunda sisteminizin performansını sürekli izlemek ve gerektiği gibi ayarlamak work_mem önemlidir. Azure portalında bulunan araçları kullanarak performansı izlemenin yolları şunlardır:

  • Sorgu performansı içgörüleri: Geçici dosyalar oluşturan sorguları tanımlamak için Geçici dosyalara göre en çok kullanılan sorgular sekmesini denetleyin. Bu durum, öğesinin artırılmasına work_memyönelik olası bir gereksinim olduğunu gösterir.
  • Sorun giderme kılavuzları: Sorunlu sorguları tanımlamak için sorun giderme kılavuzlarındaki Yüksek geçici dosyalar sekmesini kullanın.
Ayrıntılı ayarlama

Parametresini work_mem yönetirken, genel bir değer ayarlamak yerine ayrıntılı ayarlama yaklaşımını benimsemek genellikle daha verimli olur. Bu yaklaşım, işlemlerin ve kullanıcıların belirli gereksinimlerine göre bellek ayırmanızı sağlar. Ayrıca yetersiz bellek sorunlarıyla karşılaşma riskini de en aza indirir. Bu konuda şu şekilde devam edebilirsiniz:

  • Kullanıcı düzeyi: Belirli bir kullanıcı öncelikle yoğun bellek kullanan toplama veya raporlama görevlerinde yer alıyorsa, söz konusu kullanıcının değerini özelleştirmeyi work_mem göz önünde bulundurun. ALTER ROLE Kullanıcının işlemlerinin performansını artırmak için komutunu kullanın.

  • İşlev/yordam düzeyi: Belirli işlevler veya yordamlar önemli miktarda geçici dosya oluşturuyorsa, belirli işlev veya yordam düzeyinde değeri artırmak work_mem yararlı olabilir. Bu işlemlere ALTER FUNCTION özel olarak daha fazla bellek ayırmak için veya ALTER PROCEDURE komutunu kullanın.

  • Veritabanı düzeyi: Yalnızca belirli veritabanları yüksek sayıda geçici dosya oluşturuyorsa veritabanı düzeyinde değişiklik work_mem yapın.

  • Genel düzey: Sisteminizin analizi çoğu sorgunun küçük geçici dosyalar oluşturduğunu, ancak yalnızca birkaçının büyük dosyalar oluşturduğunu gösterirse, değeri genel olarak artırmak work_mem akıllıca olabilir. Bu eylem sorguların çoğunun bellekte işlenmesini kolaylaştırır, böylece disk tabanlı işlemlerden kaçınabilir ve verimliliği artırabilirsiniz. Ancak, artan work_mem değeri işleyebileceğinden emin olmak için her zaman dikkatli olun ve sunucunuzdaki bellek kullanımını izleyin.

Sıralama işlemleri için en düşük work_mem değerini belirleme

Özellikle sıralama işlemi sırasında geçici disk dosyaları oluşturan belirli bir sorgunun en düşük work_mem değerini bulmak için, sorgu yürütme sırasında oluşturulan geçici dosya boyutunu göz önünde bulundurarak başlayın. Örneğin, bir sorgu 20 MB geçici bir dosya oluşturuyorsa:

  1. psql veya tercih ettiğiniz PostgreSQL istemcisini kullanarak veritabanınıza bağlanın.
  2. Bellekte işlenirken ek üst bilgileri hesaba katmak için 20 MB'tan biraz daha yüksek bir başlangıç work_mem değeri ayarlayın. Şunun gibi bir komut kullanın: SET work_mem TO '25MB'.
  3. Aynı oturumda sorunlu sorguda komutunu çalıştırın EXPLAIN ANALYZE .
  4. için "Sort Method: quicksort Memory: xkB"çıktıyı gözden geçirin. değerini gösteriyorsa "external merge Disk: xkB", değeri artımlı olarak yükseltin work_mem ve görünene kadar "quicksort Memory" yeniden test edin. Sorgunun "quicksort Memory" artık bellekte çalıştığını belirten sinyallerin görünümü.
  5. Bu yöntem aracılığıyla değeri belirledikten sonra, operasyonel gereksinimlerinize uyacak şekilde genel olarak veya daha ayrıntılı düzeylerde (daha önce açıklandığı gibi) uygulayabilirsiniz.

autovacuum_work_mem

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama Her otomatik vakum çalışan işlemi tarafından kullanılacak en yüksek belleği ayarlar.
Veri türü integer
Default value -1
İzin verilen değerler -1-2097151
Parametre türü dynamic
Belgeler autovacuum_work_mem

dynamic_shared_memory_type

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama Kullanılan dinamik paylaşılan bellek uygulamasını seçer.
Veri türü listeleme
Default value posix
İzin verilen değerler posix
Parametre türü salt okunur
Belgeler dynamic_shared_memory_type

hash_mem_multiplier

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama Karma tablolar için kullanılacak work_mem katı.
Veri türü sayısal
Default value 1
İzin verilen değerler 1-1000
Parametre türü dynamic
Belgeler hash_mem_multiplier

huge_pages

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama Büyük bellek sayfalarının kullanımını etkinleştirir/devre dışı bırakır. Bu ayar, 4'ten az sanal çekirdeği olan sunucular için geçerli değildir.
Veri türü listeleme
Default value try
İzin verilen değerler on,off,try
Parametre türü static
Belgeler huge_pages

Açıklama

Büyük sayfalar, belleğin daha büyük bloklarda yönetilmesini sağlayan bir özelliktir. Standart 4 KB sayfa yerine genellikle 2 MB'a kadar blokları yönetebilirsiniz.

Çok büyük sayfaların kullanılması, CPU'ları etkili bir şekilde boşaltan performans avantajları sunabilir:

  • Daha az çeviri lookaside buffer (TLB) hatası gibi bellek yönetimi görevleriyle ilişkili ek yükü azaltır.
  • Bellek yönetimi için gereken süreyi kısaltır.

Özellikle, PostgreSQL'de büyük sayfaları yalnızca paylaşılan bellek alanı için kullanabilirsiniz. Paylaşılan bellek alanının önemli bir bölümü paylaşılan arabellekler için ayrılır.

Başka bir avantajı, büyük sayfaların paylaşılan bellek alanının diske değişimini engellemesi ve bu da performansı daha da dengeler.

Öneriler

  • Önemli bellek kaynaklarına sahip sunucular için büyük sayfaları devre dışı bırakmaktan kaçının. Çok büyük sayfaları devre dışı bırakmak performansı tehlikeye atabilir.
  • Çok büyük sayfaları desteklemeyen daha küçük bir sunucuyla başlıyorsanız ancak bunu destekleyen bir sunucuya ölçeği artırmayı düşünüyorsanız, sorunsuz geçiş ve en iyi performans için ayarını konumunda TRY tutunhuge_pages.

Azure'a özgü notlar

Dört veya daha fazla sanal çekirdek içeren sunucular için, temel alınan işletim sisteminden büyük sayfalar otomatik olarak ayrılır. Bu özellik, dörtten az sanal çekirdeği olan sunucularda kullanılamaz. büyük sayfa sayısı, üzerinde yapılan değişiklikler shared_buffersde dahil olmak üzere paylaşılan bellek ayarları değiştirilirse otomatik olarak ayarlanır.

logical_decoding_work_mem

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama Mantıksal kod çözme için kullanılacak en yüksek belleği ayarlar.
Veri türü integer
Default value 65536
İzin verilen değerler 64-2147483647
Parametre türü dynamic
Belgeler logical_decoding_work_mem

maintenance_work_mem

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama VACUUM, Create Index gibi bakım işlemleri için kullanılacak en yüksek belleği ayarlar.
Veri türü integer
Default value Sunucuya ayrılan kaynaklara (sanal çekirdekler, RAM veya disk alanı) bağlıdır.
İzin verilen değerler 1024-2097151
Parametre türü dynamic
Belgeler maintenance_work_mem

Açıklama

maintenance_work_mem PostgreSQL'deki bir yapılandırma parametresidir. , CREATE INDEXve ALTER TABLEgibi VACUUMbakım işlemleri için ayrılan bellek miktarını yönetir. 'nin aksine work_mem, sorgu işlemleri için bellek ayırmayı etkiler, maintenance_work_mem veritabanı yapısını koruyan ve en iyi duruma getiren görevler için ayrılmıştır.

Önemli noktalar

  • Vakum bellek üst sınırı: Ölü tanımlama demetlerinin temizlenmesini artırarak maintenance_work_memhızlandırmak istiyorsanız, ölü tanımlama grubu tanımlayıcılarını toplamak için yerleşik bir sınırlama olduğunu VACUUM unutmayın. Bu işlem için yalnızca 1 GB'a kadar bellek kullanabilir.
  • Otomatik vakum için bellek ayrımı: Otomatik vakum işlemlerinin autovacuum_work_mem bağımsız olarak kullandığı belleği denetlemek için ayarını kullanabilirsiniz. Bu ayar, öğesinin maintenance_work_membir alt kümesi olarak görev yapar. Diğer bakım görevleri ve veri tanımı işlemleri için bellek ayırmayı etkilemeden otomatik vakum işlevinin ne kadar bellek kullandığına karar vekleyebilirsiniz.

Azure'a özgü notlar

Sunucu parametresinin maintenance_work_mem varsayılan değeri, işlem için seçtiğiniz ürün adına göre esnek PostgreSQL için Azure Veritabanı sunucu örneğini sağladığınızda hesaplanır. Esnek sunucuyu destekleyen işlemde ürün seçiminde yapılan sonraki değişiklikler, o örneğin sunucu parametresi için maintenance_work_mem varsayılan değer üzerinde herhangi bir etkiye sahip olmayacaktır.

Bir örneğe atanan ürünü her değiştirdiğinizde, parametrenin değerini maintenance_work_mem aşağıdaki formüldeki değerlere göre de ayarlamanız gerekir.

değerini maintenance_work_mem hesaplamak için kullanılan formül: (long)(82.5 * ln(memoryGiB) + 40) * 1024.

Önceki formüle bağlı olarak, aşağıdaki tabloda sağlanan bellek miktarına bağlı olarak bu sunucu parametresinin ayarlanacağı değerler listelenmiştir:

Bellek boyutu maintenance_work_mem
2 GiB 99328 KiB
4 GiB 157696 KiB
8 GiB 216064 KiB
16 GiB 274432 KiB
32 GiB 332800 KiB
48 GiB 367616 KiB
64 GiB 392192 KiB
80 GiB 410624 KiB
128 GiB 450560 KiB
160 GiB 468992 KiB
192 GiB 484352 KiB
256 GiB 508928 KiB
384 GiB 542720 KiB
432 GiB 552960 KiB
672 GiB 590848 KiB

max_prepared_transactions

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama Eşzamanlı olarak hazırlanmış en fazla işlem sayısını ayarlar. Çoğaltma sunucusunu çalıştırırken, bu parametreyi birincil sunucudakiyle aynı veya daha yüksek bir değere ayarlamanız gerekir.
Veri türü integer
Default value 0
İzin verilen değerler 0-262143
Parametre türü static
Belgeler max_prepared_transactions

max_stack_depth

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama Maksimum yığın derinliğini kilobayt olarak ayarlar.
Veri türü integer
Default value 2048
İzin verilen değerler 2048
Parametre türü salt okunur
Belgeler max_stack_depth

shared_buffers

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama Sunucu tarafından kullanılan paylaşılan bellek arabelleklerinin sayısını ayarlar. Birim 8 kb'dir. İzin verilen değerler kullanılabilir belleğin %10 - %75'i aralığındadır.
Veri türü integer
Default value Sunucuya ayrılan kaynaklara (sanal çekirdekler, RAM veya disk alanı) bağlıdır.
İzin verilen değerler 16-1073741823
Parametre türü static
Belgeler shared_buffers

Açıklama

Yapılandırma shared_buffers parametresi, verileri arabelleğe almak için PostgreSQL veritabanına ayrılan sistem belleği miktarını belirler. Tüm veritabanı işlemleri tarafından erişilebilen merkezi bir bellek havuzu görevi görür.

Veri gerektiğinde, veritabanı işlemi önce paylaşılan arabelleği denetler. Gerekli veriler varsa, hızlı bir şekilde alınır ve daha fazla zaman alan bir disk okumasını atlar. Paylaşılan arabellekler, veritabanı işlemleriyle disk arasında bir aracı görevi görür ve gerekli G/Ç işlemlerinin sayısını etkili bir şekilde azaltır.

Azure'a özgü notlar

Sunucu parametresinin shared_buffers varsayılan değeri, işlem için seçtiğiniz ürün adına göre esnek PostgreSQL için Azure Veritabanı sunucu örneğini sağladığınızda hesaplanır. Esnek sunucuyu destekleyen işlemde ürün seçiminde yapılan sonraki değişiklikler, bu örneğin sunucu parametresi için shared_buffers varsayılan değer üzerinde herhangi bir etkiye sahip değildir.

Bir örneğe atanan ürünü her değiştirdiğinizde, parametrenin değerini shared_buffers aşağıdaki formüllerdeki değerlere göre de ayarlamanız gerekir.

En fazla 2 GiB belleğe sahip sanal makineler için değerini shared_buffers hesaplamak için kullanılan formül olur memoryGib * 16384.

2 GiB'den fazla sanal makine için değerini shared_buffers hesaplamak için kullanılan formül şeklindedir memoryGib * 32768.

Önceki formüle bağlı olarak, aşağıdaki tabloda sağlanan bellek miktarına bağlı olarak bu sunucu parametresinin ayarlanacağı değerler listelenmiştir:

Bellek boyutu shared_buffers
2 GiB 32768
4 GiB 131072
8 GiB 262144
16 GiB 524288
32 GiB 1048576
48 GiB 1572864
64 GiB 2097152
80 GiB 2621440
128 GiB 4194304
160 GiB 5242880
192 GiB 6291456
256 GiB 8388608
384 GiB 12582912
432 GiB 14155776
672 GiB 22020096

shared_memory_type

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama Ana paylaşılan bellek bölgesi için kullanılan paylaşılan bellek uygulamasını seçer.
Veri türü listeleme
Default value mmap
İzin verilen değerler mmap
Parametre türü salt okunur
Belgeler shared_memory_type

temp_buffers

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama Her veritabanı oturumu tarafından kullanılan en fazla geçici arabellek sayısını ayarlar.
Veri türü integer
Default value 1024
İzin verilen değerler 100-1073741823
Parametre türü dynamic
Belgeler temp_buffers

work_mem

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama Geçici disk dosyalarına yazmadan önce iç sıralama işlemleri ve karma tabloları tarafından kullanılacak bellek miktarını ayarlar.
Veri türü integer
Default value 4096
İzin verilen değerler 4096-2097151
Parametre türü dynamic
Belgeler work_mem

Açıklama

work_mem PostgreSQL'deki parametresi, her veritabanı oturumunun özel bellek alanındaki belirli iç işlemler için ayrılan bellek miktarını denetler. Bu işlemlere örnek olarak sıralama ve karma oluşturma verilebilir.

Paylaşılan bellek alanında yer alan paylaşılan arabelleklerin aksine, work_mem oturum başına veya sorgu başına özel bellek alanında ayrılır. Yeterli work_mem bir boyut ayarlayarak bu işlemlerin verimliliğini önemli ölçüde artırabilir ve diske geçici veri yazma gereksinimini azaltabilirsiniz.

Önemli noktalar

  • Özel bağlantı belleği: work_mem her veritabanı oturumunun kullandığı özel belleğin bir parçasıdır. Bu bellek, kullanılan paylaşılan bellek alanından shared_buffers farklıdır.
  • Sorguya özgü kullanım: Tüm oturumlar veya sorgular kullanmaz work_mem. gibi SELECT 1 basit sorguların gerektirme work_memolasılığı düşüktür. Ancak, sıralama veya karma oluşturma gibi işlemleri içeren karmaşık sorgular work_membir veya birden çok öbeği tüketebilir.
  • Paralel işlemler: Birden çok paralel arka uca yayılan sorgular için her arka uç bir veya birden çok öbek work_memkullanabilir.

work_mem izleme ve ayarlama

Öncelikle sıralama veya karma işlemleriyle ilgili sorgu yürütme sürelerinin yavaş olması durumunda sisteminizin performansını sürekli izlemek ve gerektiği gibi ayarlamak work_mem önemlidir. Azure portalında bulunan araçları kullanarak performansı izlemenin yolları şunlardır:

  • Sorgu performansı içgörüleri: Geçici dosyalar oluşturan sorguları tanımlamak için Geçici dosyalara göre en çok kullanılan sorgular sekmesini denetleyin. Bu durum, öğesinin artırılmasına work_memyönelik olası bir gereksinim olduğunu gösterir.
  • Sorun giderme kılavuzları: Sorunlu sorguları tanımlamak için sorun giderme kılavuzlarındaki Yüksek geçici dosyalar sekmesini kullanın.
Ayrıntılı ayarlama

Parametresini work_mem yönetirken, genel bir değer ayarlamak yerine ayrıntılı ayarlama yaklaşımını benimsemek genellikle daha verimli olur. Bu yaklaşım, işlemlerin ve kullanıcıların belirli gereksinimlerine göre bellek ayırmanızı sağlar. Ayrıca yetersiz bellek sorunlarıyla karşılaşma riskini de en aza indirir. Bu konuda şu şekilde devam edebilirsiniz:

  • Kullanıcı düzeyi: Belirli bir kullanıcı öncelikle yoğun bellek kullanan toplama veya raporlama görevlerinde yer alıyorsa, söz konusu kullanıcının değerini özelleştirmeyi work_mem göz önünde bulundurun. ALTER ROLE Kullanıcının işlemlerinin performansını artırmak için komutunu kullanın.

  • İşlev/yordam düzeyi: Belirli işlevler veya yordamlar önemli miktarda geçici dosya oluşturuyorsa, belirli işlev veya yordam düzeyinde değeri artırmak work_mem yararlı olabilir. Bu işlemlere ALTER FUNCTION özel olarak daha fazla bellek ayırmak için veya ALTER PROCEDURE komutunu kullanın.

  • Veritabanı düzeyi: Yalnızca belirli veritabanları yüksek sayıda geçici dosya oluşturuyorsa veritabanı düzeyinde değişiklik work_mem yapın.

  • Genel düzey: Sisteminizin analizi çoğu sorgunun küçük geçici dosyalar oluşturduğunu, ancak yalnızca birkaçının büyük dosyalar oluşturduğunu gösterirse, değeri genel olarak artırmak work_mem akıllıca olabilir. Bu eylem sorguların çoğunun bellekte işlenmesini kolaylaştırır, böylece disk tabanlı işlemlerden kaçınabilir ve verimliliği artırabilirsiniz. Ancak, artan work_mem değeri işleyebileceğinden emin olmak için her zaman dikkatli olun ve sunucunuzdaki bellek kullanımını izleyin.

Sıralama işlemleri için en düşük work_mem değerini belirleme

Özellikle sıralama işlemi sırasında geçici disk dosyaları oluşturan belirli bir sorgunun en düşük work_mem değerini bulmak için, sorgu yürütme sırasında oluşturulan geçici dosya boyutunu göz önünde bulundurarak başlayın. Örneğin, bir sorgu 20 MB geçici bir dosya oluşturuyorsa:

  1. psql veya tercih ettiğiniz PostgreSQL istemcisini kullanarak veritabanınıza bağlanın.
  2. Bellekte işlenirken ek üst bilgileri hesaba katmak için 20 MB'tan biraz daha yüksek bir başlangıç work_mem değeri ayarlayın. Şunun gibi bir komut kullanın: SET work_mem TO '25MB'.
  3. Aynı oturumda sorunlu sorguda komutunu çalıştırın EXPLAIN ANALYZE .
  4. için "Sort Method: quicksort Memory: xkB"çıktıyı gözden geçirin. değerini gösteriyorsa "external merge Disk: xkB", değeri artımlı olarak yükseltin work_mem ve görünene kadar "quicksort Memory" yeniden test edin. Sorgunun "quicksort Memory" artık bellekte çalıştığını belirten sinyallerin görünümü.
  5. Bu yöntem aracılığıyla değeri belirledikten sonra, operasyonel gereksinimlerinize uyacak şekilde genel olarak veya daha ayrıntılı düzeylerde (daha önce açıklandığı gibi) uygulayabilirsiniz.

autovacuum_work_mem

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama Her otomatik vakum çalışan işlemi tarafından kullanılacak en yüksek belleği ayarlar.
Veri türü integer
Default value -1
İzin verilen değerler -1-2097151
Parametre türü dynamic
Belgeler autovacuum_work_mem

dynamic_shared_memory_type

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama Kullanılan dinamik paylaşılan bellek uygulamasını seçer.
Veri türü listeleme
Default value posix
İzin verilen değerler posix
Parametre türü salt okunur
Belgeler dynamic_shared_memory_type

hash_mem_multiplier

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama Karma tablolar için kullanılacak work_mem katı.
Veri türü sayısal
Default value 1
İzin verilen değerler 1-1000
Parametre türü dynamic
Belgeler hash_mem_multiplier

huge_pages

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama Büyük bellek sayfalarının kullanımını etkinleştirir/devre dışı bırakır. Bu ayar, 4'ten az sanal çekirdeği olan sunucular için geçerli değildir.
Veri türü listeleme
Default value try
İzin verilen değerler on,off,try
Parametre türü static
Belgeler huge_pages

Açıklama

Büyük sayfalar, belleğin daha büyük bloklarda yönetilmesini sağlayan bir özelliktir. Standart 4 KB sayfa yerine genellikle 2 MB'a kadar blokları yönetebilirsiniz.

Çok büyük sayfaların kullanılması, CPU'ları etkili bir şekilde boşaltan performans avantajları sunabilir:

  • Daha az çeviri lookaside buffer (TLB) hatası gibi bellek yönetimi görevleriyle ilişkili ek yükü azaltır.
  • Bellek yönetimi için gereken süreyi kısaltır.

Özellikle, PostgreSQL'de büyük sayfaları yalnızca paylaşılan bellek alanı için kullanabilirsiniz. Paylaşılan bellek alanının önemli bir bölümü paylaşılan arabellekler için ayrılır.

Başka bir avantajı, büyük sayfaların paylaşılan bellek alanının diske değişimini engellemesi ve bu da performansı daha da dengeler.

Öneriler

  • Önemli bellek kaynaklarına sahip sunucular için büyük sayfaları devre dışı bırakmaktan kaçının. Çok büyük sayfaları devre dışı bırakmak performansı tehlikeye atabilir.
  • Çok büyük sayfaları desteklemeyen daha küçük bir sunucuyla başlıyorsanız ancak bunu destekleyen bir sunucuya ölçeği artırmayı düşünüyorsanız, sorunsuz geçiş ve en iyi performans için ayarını konumunda TRY tutunhuge_pages.

Azure'a özgü notlar

Dört veya daha fazla sanal çekirdek içeren sunucular için, temel alınan işletim sisteminden büyük sayfalar otomatik olarak ayrılır. Bu özellik, dörtten az sanal çekirdeği olan sunucularda kullanılamaz. büyük sayfa sayısı, üzerinde yapılan değişiklikler shared_buffersde dahil olmak üzere paylaşılan bellek ayarları değiştirilirse otomatik olarak ayarlanır.

maintenance_work_mem

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama VACUUM, Create Index gibi bakım işlemleri için kullanılacak en yüksek belleği ayarlar.
Veri türü integer
Default value Sunucuya ayrılan kaynaklara (sanal çekirdekler, RAM veya disk alanı) bağlıdır.
İzin verilen değerler 1024-2097151
Parametre türü dynamic
Belgeler maintenance_work_mem

Açıklama

maintenance_work_mem PostgreSQL'deki bir yapılandırma parametresidir. , CREATE INDEXve ALTER TABLEgibi VACUUMbakım işlemleri için ayrılan bellek miktarını yönetir. 'nin aksine work_mem, sorgu işlemleri için bellek ayırmayı etkiler, maintenance_work_mem veritabanı yapısını koruyan ve en iyi duruma getiren görevler için ayrılmıştır.

Önemli noktalar

  • Vakum bellek üst sınırı: Ölü tanımlama demetlerinin temizlenmesini artırarak maintenance_work_memhızlandırmak istiyorsanız, ölü tanımlama grubu tanımlayıcılarını toplamak için yerleşik bir sınırlama olduğunu VACUUM unutmayın. Bu işlem için yalnızca 1 GB'a kadar bellek kullanabilir.
  • Otomatik vakum için bellek ayrımı: Otomatik vakum işlemlerinin autovacuum_work_mem bağımsız olarak kullandığı belleği denetlemek için ayarını kullanabilirsiniz. Bu ayar, öğesinin maintenance_work_membir alt kümesi olarak görev yapar. Diğer bakım görevleri ve veri tanımı işlemleri için bellek ayırmayı etkilemeden otomatik vakum işlevinin ne kadar bellek kullandığına karar vekleyebilirsiniz.

Azure'a özgü notlar

Sunucu parametresinin maintenance_work_mem varsayılan değeri, işlem için seçtiğiniz ürün adına göre esnek PostgreSQL için Azure Veritabanı sunucu örneğini sağladığınızda hesaplanır. Esnek sunucuyu destekleyen işlemde ürün seçiminde yapılan sonraki değişiklikler, o örneğin sunucu parametresi için maintenance_work_mem varsayılan değer üzerinde herhangi bir etkiye sahip olmayacaktır.

Bir örneğe atanan ürünü her değiştirdiğinizde, parametrenin değerini maintenance_work_mem aşağıdaki formüldeki değerlere göre de ayarlamanız gerekir.

değerini maintenance_work_mem hesaplamak için kullanılan formül: (long)(82.5 * ln(memoryGiB) + 40) * 1024.

Önceki formüle bağlı olarak, aşağıdaki tabloda sağlanan bellek miktarına bağlı olarak bu sunucu parametresinin ayarlanacağı değerler listelenmiştir:

Bellek boyutu maintenance_work_mem
2 GiB 99328 KiB
4 GiB 157696 KiB
8 GiB 216064 KiB
16 GiB 274432 KiB
32 GiB 332800 KiB
48 GiB 367616 KiB
64 GiB 392192 KiB
80 GiB 410624 KiB
128 GiB 450560 KiB
160 GiB 468992 KiB
192 GiB 484352 KiB
256 GiB 508928 KiB
384 GiB 542720 KiB
432 GiB 552960 KiB
672 GiB 590848 KiB

max_prepared_transactions

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama Eşzamanlı olarak hazırlanmış en fazla işlem sayısını ayarlar. Çoğaltma sunucusunu çalıştırırken, bu parametreyi birincil sunucudakiyle aynı veya daha yüksek bir değere ayarlamanız gerekir.
Veri türü integer
Default value 0
İzin verilen değerler 0-262143
Parametre türü static
Belgeler max_prepared_transactions

max_stack_depth

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama Maksimum yığın derinliğini kilobayt olarak ayarlar.
Veri türü integer
Default value 2048
İzin verilen değerler 2048
Parametre türü salt okunur
Belgeler max_stack_depth

shared_buffers

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama Sunucu tarafından kullanılan paylaşılan bellek arabelleklerinin sayısını ayarlar. Birim 8 kb'dir. İzin verilen değerler kullanılabilir belleğin %10 - %75'i aralığındadır.
Veri türü integer
Default value Sunucuya ayrılan kaynaklara (sanal çekirdekler, RAM veya disk alanı) bağlıdır.
İzin verilen değerler 16-1073741823
Parametre türü static
Belgeler shared_buffers

Açıklama

Yapılandırma shared_buffers parametresi, verileri arabelleğe almak için PostgreSQL veritabanına ayrılan sistem belleği miktarını belirler. Tüm veritabanı işlemleri tarafından erişilebilen merkezi bir bellek havuzu görevi görür.

Veri gerektiğinde, veritabanı işlemi önce paylaşılan arabelleği denetler. Gerekli veriler varsa, hızlı bir şekilde alınır ve daha fazla zaman alan bir disk okumasını atlar. Paylaşılan arabellekler, veritabanı işlemleriyle disk arasında bir aracı görevi görür ve gerekli G/Ç işlemlerinin sayısını etkili bir şekilde azaltır.

Azure'a özgü notlar

Sunucu parametresinin shared_buffers varsayılan değeri, işlem için seçtiğiniz ürün adına göre esnek PostgreSQL için Azure Veritabanı sunucu örneğini sağladığınızda hesaplanır. Esnek sunucuyu destekleyen işlemde ürün seçiminde yapılan sonraki değişiklikler, bu örneğin sunucu parametresi için shared_buffers varsayılan değer üzerinde herhangi bir etkiye sahip değildir.

Bir örneğe atanan ürünü her değiştirdiğinizde, parametrenin değerini shared_buffers aşağıdaki formüllerdeki değerlere göre de ayarlamanız gerekir.

En fazla 2 GiB belleğe sahip sanal makineler için değerini shared_buffers hesaplamak için kullanılan formül olur memoryGib * 16384.

2 GiB'den fazla sanal makine için değerini shared_buffers hesaplamak için kullanılan formül şeklindedir memoryGib * 32768.

Önceki formüle bağlı olarak, aşağıdaki tabloda sağlanan bellek miktarına bağlı olarak bu sunucu parametresinin ayarlanacağı değerler listelenmiştir:

Bellek boyutu shared_buffers
2 GiB 32768
4 GiB 131072
8 GiB 262144
16 GiB 524288
32 GiB 1048576
48 GiB 1572864
64 GiB 2097152
80 GiB 2621440
128 GiB 4194304
160 GiB 5242880
192 GiB 6291456
256 GiB 8388608
384 GiB 12582912
432 GiB 14155776
672 GiB 22020096

shared_memory_type

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama Ana paylaşılan bellek bölgesi için kullanılan paylaşılan bellek uygulamasını seçer.
Veri türü listeleme
Default value mmap
İzin verilen değerler mmap
Parametre türü salt okunur
Belgeler shared_memory_type

temp_buffers

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama Her veritabanı oturumu tarafından kullanılan en fazla geçici arabellek sayısını ayarlar.
Veri türü integer
Default value 1024
İzin verilen değerler 100-1073741823
Parametre türü dynamic
Belgeler temp_buffers

work_mem

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama Geçici disk dosyalarına yazmadan önce iç sıralama işlemleri ve karma tabloları tarafından kullanılacak bellek miktarını ayarlar.
Veri türü integer
Default value 4096
İzin verilen değerler 4096-2097151
Parametre türü dynamic
Belgeler work_mem

Açıklama

work_mem PostgreSQL'deki parametresi, her veritabanı oturumunun özel bellek alanındaki belirli iç işlemler için ayrılan bellek miktarını denetler. Bu işlemlere örnek olarak sıralama ve karma oluşturma verilebilir.

Paylaşılan bellek alanında yer alan paylaşılan arabelleklerin aksine, work_mem oturum başına veya sorgu başına özel bellek alanında ayrılır. Yeterli work_mem bir boyut ayarlayarak bu işlemlerin verimliliğini önemli ölçüde artırabilir ve diske geçici veri yazma gereksinimini azaltabilirsiniz.

Önemli noktalar

  • Özel bağlantı belleği: work_mem her veritabanı oturumunun kullandığı özel belleğin bir parçasıdır. Bu bellek, kullanılan paylaşılan bellek alanından shared_buffers farklıdır.
  • Sorguya özgü kullanım: Tüm oturumlar veya sorgular kullanmaz work_mem. gibi SELECT 1 basit sorguların gerektirme work_memolasılığı düşüktür. Ancak, sıralama veya karma oluşturma gibi işlemleri içeren karmaşık sorgular work_membir veya birden çok öbeği tüketebilir.
  • Paralel işlemler: Birden çok paralel arka uca yayılan sorgular için her arka uç bir veya birden çok öbek work_memkullanabilir.

work_mem izleme ve ayarlama

Öncelikle sıralama veya karma işlemleriyle ilgili sorgu yürütme sürelerinin yavaş olması durumunda sisteminizin performansını sürekli izlemek ve gerektiği gibi ayarlamak work_mem önemlidir. Azure portalında bulunan araçları kullanarak performansı izlemenin yolları şunlardır:

  • Sorgu performansı içgörüleri: Geçici dosyalar oluşturan sorguları tanımlamak için Geçici dosyalara göre en çok kullanılan sorgular sekmesini denetleyin. Bu durum, öğesinin artırılmasına work_memyönelik olası bir gereksinim olduğunu gösterir.
  • Sorun giderme kılavuzları: Sorunlu sorguları tanımlamak için sorun giderme kılavuzlarındaki Yüksek geçici dosyalar sekmesini kullanın.
Ayrıntılı ayarlama

Parametresini work_mem yönetirken, genel bir değer ayarlamak yerine ayrıntılı ayarlama yaklaşımını benimsemek genellikle daha verimli olur. Bu yaklaşım, işlemlerin ve kullanıcıların belirli gereksinimlerine göre bellek ayırmanızı sağlar. Ayrıca yetersiz bellek sorunlarıyla karşılaşma riskini de en aza indirir. Bu konuda şu şekilde devam edebilirsiniz:

  • Kullanıcı düzeyi: Belirli bir kullanıcı öncelikle yoğun bellek kullanan toplama veya raporlama görevlerinde yer alıyorsa, söz konusu kullanıcının değerini özelleştirmeyi work_mem göz önünde bulundurun. ALTER ROLE Kullanıcının işlemlerinin performansını artırmak için komutunu kullanın.

  • İşlev/yordam düzeyi: Belirli işlevler veya yordamlar önemli miktarda geçici dosya oluşturuyorsa, belirli işlev veya yordam düzeyinde değeri artırmak work_mem yararlı olabilir. Bu işlemlere ALTER FUNCTION özel olarak daha fazla bellek ayırmak için veya ALTER PROCEDURE komutunu kullanın.

  • Veritabanı düzeyi: Yalnızca belirli veritabanları yüksek sayıda geçici dosya oluşturuyorsa veritabanı düzeyinde değişiklik work_mem yapın.

  • Genel düzey: Sisteminizin analizi çoğu sorgunun küçük geçici dosyalar oluşturduğunu, ancak yalnızca birkaçının büyük dosyalar oluşturduğunu gösterirse, değeri genel olarak artırmak work_mem akıllıca olabilir. Bu eylem sorguların çoğunun bellekte işlenmesini kolaylaştırır, böylece disk tabanlı işlemlerden kaçınabilir ve verimliliği artırabilirsiniz. Ancak, artan work_mem değeri işleyebileceğinden emin olmak için her zaman dikkatli olun ve sunucunuzdaki bellek kullanımını izleyin.

Sıralama işlemleri için en düşük work_mem değerini belirleme

Özellikle sıralama işlemi sırasında geçici disk dosyaları oluşturan belirli bir sorgunun en düşük work_mem değerini bulmak için, sorgu yürütme sırasında oluşturulan geçici dosya boyutunu göz önünde bulundurarak başlayın. Örneğin, bir sorgu 20 MB geçici bir dosya oluşturuyorsa:

  1. psql veya tercih ettiğiniz PostgreSQL istemcisini kullanarak veritabanınıza bağlanın.
  2. Bellekte işlenirken ek üst bilgileri hesaba katmak için 20 MB'tan biraz daha yüksek bir başlangıç work_mem değeri ayarlayın. Şunun gibi bir komut kullanın: SET work_mem TO '25MB'.
  3. Aynı oturumda sorunlu sorguda komutunu çalıştırın EXPLAIN ANALYZE .
  4. için "Sort Method: quicksort Memory: xkB"çıktıyı gözden geçirin. değerini gösteriyorsa "external merge Disk: xkB", değeri artımlı olarak yükseltin work_mem ve görünene kadar "quicksort Memory" yeniden test edin. Sorgunun "quicksort Memory" artık bellekte çalıştığını belirten sinyallerin görünümü.
  5. Bu yöntem aracılığıyla değeri belirledikten sonra, operasyonel gereksinimlerinize uyacak şekilde genel olarak veya daha ayrıntılı düzeylerde (daha önce açıklandığı gibi) uygulayabilirsiniz.

autovacuum_work_mem

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama Her otomatik vakum çalışan işlemi tarafından kullanılacak en yüksek belleği ayarlar.
Veri türü integer
Default value -1
İzin verilen değerler -1-2097151
Parametre türü dynamic
Belgeler autovacuum_work_mem

dynamic_shared_memory_type

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama Kullanılan dinamik paylaşılan bellek uygulamasını seçer.
Veri türü listeleme
Default value posix
İzin verilen değerler posix
Parametre türü salt okunur
Belgeler dynamic_shared_memory_type

huge_pages

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama Büyük bellek sayfalarının kullanımını etkinleştirir/devre dışı bırakır. Bu ayar, 4'ten az sanal çekirdeği olan sunucular için geçerli değildir.
Veri türü listeleme
Default value try
İzin verilen değerler on,off,try
Parametre türü static
Belgeler huge_pages

Açıklama

Büyük sayfalar, belleğin daha büyük bloklarda yönetilmesini sağlayan bir özelliktir. Standart 4 KB sayfa yerine genellikle 2 MB'a kadar blokları yönetebilirsiniz.

Çok büyük sayfaların kullanılması, CPU'ları etkili bir şekilde boşaltan performans avantajları sunabilir:

  • Daha az çeviri lookaside buffer (TLB) hatası gibi bellek yönetimi görevleriyle ilişkili ek yükü azaltır.
  • Bellek yönetimi için gereken süreyi kısaltır.

Özellikle, PostgreSQL'de büyük sayfaları yalnızca paylaşılan bellek alanı için kullanabilirsiniz. Paylaşılan bellek alanının önemli bir bölümü paylaşılan arabellekler için ayrılır.

Başka bir avantajı, büyük sayfaların paylaşılan bellek alanının diske değişimini engellemesi ve bu da performansı daha da dengeler.

Öneriler

  • Önemli bellek kaynaklarına sahip sunucular için büyük sayfaları devre dışı bırakmaktan kaçının. Çok büyük sayfaları devre dışı bırakmak performansı tehlikeye atabilir.
  • Çok büyük sayfaları desteklemeyen daha küçük bir sunucuyla başlıyorsanız ancak bunu destekleyen bir sunucuya ölçeği artırmayı düşünüyorsanız, sorunsuz geçiş ve en iyi performans için ayarını konumunda TRY tutunhuge_pages.

Azure'a özgü notlar

Dört veya daha fazla sanal çekirdek içeren sunucular için, temel alınan işletim sisteminden büyük sayfalar otomatik olarak ayrılır. Bu özellik, dörtten az sanal çekirdeği olan sunucularda kullanılamaz. büyük sayfa sayısı, üzerinde yapılan değişiklikler shared_buffersde dahil olmak üzere paylaşılan bellek ayarları değiştirilirse otomatik olarak ayarlanır.

maintenance_work_mem

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama VACUUM, Create Index gibi bakım işlemleri için kullanılacak en yüksek belleği ayarlar.
Veri türü integer
Default value Sunucuya ayrılan kaynaklara (sanal çekirdekler, RAM veya disk alanı) bağlıdır.
İzin verilen değerler 1024-2097151
Parametre türü dynamic
Belgeler maintenance_work_mem

Açıklama

maintenance_work_mem PostgreSQL'deki bir yapılandırma parametresidir. , CREATE INDEXve ALTER TABLEgibi VACUUMbakım işlemleri için ayrılan bellek miktarını yönetir. 'nin aksine work_mem, sorgu işlemleri için bellek ayırmayı etkiler, maintenance_work_mem veritabanı yapısını koruyan ve en iyi duruma getiren görevler için ayrılmıştır.

Önemli noktalar

  • Vakum bellek üst sınırı: Ölü tanımlama demetlerinin temizlenmesini artırarak maintenance_work_memhızlandırmak istiyorsanız, ölü tanımlama grubu tanımlayıcılarını toplamak için yerleşik bir sınırlama olduğunu VACUUM unutmayın. Bu işlem için yalnızca 1 GB'a kadar bellek kullanabilir.
  • Otomatik vakum için bellek ayrımı: Otomatik vakum işlemlerinin autovacuum_work_mem bağımsız olarak kullandığı belleği denetlemek için ayarını kullanabilirsiniz. Bu ayar, öğesinin maintenance_work_membir alt kümesi olarak görev yapar. Diğer bakım görevleri ve veri tanımı işlemleri için bellek ayırmayı etkilemeden otomatik vakum işlevinin ne kadar bellek kullandığına karar vekleyebilirsiniz.

Azure'a özgü notlar

Sunucu parametresinin maintenance_work_mem varsayılan değeri, işlem için seçtiğiniz ürün adına göre esnek PostgreSQL için Azure Veritabanı sunucu örneğini sağladığınızda hesaplanır. Esnek sunucuyu destekleyen işlemde ürün seçiminde yapılan sonraki değişiklikler, o örneğin sunucu parametresi için maintenance_work_mem varsayılan değer üzerinde herhangi bir etkiye sahip olmayacaktır.

Bir örneğe atanan ürünü her değiştirdiğinizde, parametrenin değerini maintenance_work_mem aşağıdaki formüldeki değerlere göre de ayarlamanız gerekir.

değerini maintenance_work_mem hesaplamak için kullanılan formül: (long)(82.5 * ln(memoryGiB) + 40) * 1024.

Önceki formüle bağlı olarak, aşağıdaki tabloda sağlanan bellek miktarına bağlı olarak bu sunucu parametresinin ayarlanacağı değerler listelenmiştir:

Bellek boyutu maintenance_work_mem
2 GiB 99328 KiB
4 GiB 157696 KiB
8 GiB 216064 KiB
16 GiB 274432 KiB
32 GiB 332800 KiB
48 GiB 367616 KiB
64 GiB 392192 KiB
80 GiB 410624 KiB
128 GiB 450560 KiB
160 GiB 468992 KiB
192 GiB 484352 KiB
256 GiB 508928 KiB
384 GiB 542720 KiB
432 GiB 552960 KiB
672 GiB 590848 KiB

max_prepared_transactions

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama Eşzamanlı olarak hazırlanmış en fazla işlem sayısını ayarlar. Çoğaltma sunucusunu çalıştırırken, bu parametreyi birincil sunucudakiyle aynı veya daha yüksek bir değere ayarlamanız gerekir.
Veri türü integer
Default value 0
İzin verilen değerler 0-262143
Parametre türü static
Belgeler max_prepared_transactions

max_stack_depth

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama Maksimum yığın derinliğini kilobayt olarak ayarlar.
Veri türü integer
Default value 2048
İzin verilen değerler 2048
Parametre türü salt okunur
Belgeler max_stack_depth

shared_buffers

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama Sunucu tarafından kullanılan paylaşılan bellek arabelleklerinin sayısını ayarlar. Birim 8 kb'dir. İzin verilen değerler kullanılabilir belleğin %10 - %75'i aralığındadır.
Veri türü integer
Default value Sunucuya ayrılan kaynaklara (sanal çekirdekler, RAM veya disk alanı) bağlıdır.
İzin verilen değerler 16-1073741823
Parametre türü static
Belgeler shared_buffers

Açıklama

Yapılandırma shared_buffers parametresi, verileri arabelleğe almak için PostgreSQL veritabanına ayrılan sistem belleği miktarını belirler. Tüm veritabanı işlemleri tarafından erişilebilen merkezi bir bellek havuzu görevi görür.

Veri gerektiğinde, veritabanı işlemi önce paylaşılan arabelleği denetler. Gerekli veriler varsa, hızlı bir şekilde alınır ve daha fazla zaman alan bir disk okumasını atlar. Paylaşılan arabellekler, veritabanı işlemleriyle disk arasında bir aracı görevi görür ve gerekli G/Ç işlemlerinin sayısını etkili bir şekilde azaltır.

Azure'a özgü notlar

Sunucu parametresinin shared_buffers varsayılan değeri, işlem için seçtiğiniz ürün adına göre esnek PostgreSQL için Azure Veritabanı sunucu örneğini sağladığınızda hesaplanır. Esnek sunucuyu destekleyen işlemde ürün seçiminde yapılan sonraki değişiklikler, bu örneğin sunucu parametresi için shared_buffers varsayılan değer üzerinde herhangi bir etkiye sahip değildir.

Bir örneğe atanan ürünü her değiştirdiğinizde, parametrenin değerini shared_buffers aşağıdaki formüllerdeki değerlere göre de ayarlamanız gerekir.

En fazla 2 GiB belleğe sahip sanal makineler için değerini shared_buffers hesaplamak için kullanılan formül olur memoryGib * 16384.

2 GiB'den fazla sanal makine için değerini shared_buffers hesaplamak için kullanılan formül şeklindedir memoryGib * 32768.

Önceki formüle bağlı olarak, aşağıdaki tabloda sağlanan bellek miktarına bağlı olarak bu sunucu parametresinin ayarlanacağı değerler listelenmiştir:

Bellek boyutu shared_buffers
2 GiB 32768
4 GiB 131072
8 GiB 262144
16 GiB 524288
32 GiB 1048576
48 GiB 1572864
64 GiB 2097152
80 GiB 2621440
128 GiB 4194304
160 GiB 5242880
192 GiB 6291456
256 GiB 8388608
384 GiB 12582912
432 GiB 14155776
672 GiB 22020096

temp_buffers

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama Her veritabanı oturumu tarafından kullanılan en fazla geçici arabellek sayısını ayarlar.
Veri türü integer
Default value 1024
İzin verilen değerler 100-1073741823
Parametre türü dynamic
Belgeler temp_buffers

work_mem

Öznitelik Değer
Kategori Kaynak Kullanımı / Bellek
Açıklama Geçici disk dosyalarına yazmadan önce iç sıralama işlemleri ve karma tabloları tarafından kullanılacak bellek miktarını ayarlar.
Veri türü integer
Default value 4096
İzin verilen değerler 4096-2097151
Parametre türü dynamic
Belgeler work_mem

Açıklama

work_mem PostgreSQL'deki parametresi, her veritabanı oturumunun özel bellek alanındaki belirli iç işlemler için ayrılan bellek miktarını denetler. Bu işlemlere örnek olarak sıralama ve karma oluşturma verilebilir.

Paylaşılan bellek alanında yer alan paylaşılan arabelleklerin aksine, work_mem oturum başına veya sorgu başına özel bellek alanında ayrılır. Yeterli work_mem bir boyut ayarlayarak bu işlemlerin verimliliğini önemli ölçüde artırabilir ve diske geçici veri yazma gereksinimini azaltabilirsiniz.

Önemli noktalar

  • Özel bağlantı belleği: work_mem her veritabanı oturumunun kullandığı özel belleğin bir parçasıdır. Bu bellek, kullanılan paylaşılan bellek alanından shared_buffers farklıdır.
  • Sorguya özgü kullanım: Tüm oturumlar veya sorgular kullanmaz work_mem. gibi SELECT 1 basit sorguların gerektirme work_memolasılığı düşüktür. Ancak, sıralama veya karma oluşturma gibi işlemleri içeren karmaşık sorgular work_membir veya birden çok öbeği tüketebilir.
  • Paralel işlemler: Birden çok paralel arka uca yayılan sorgular için her arka uç bir veya birden çok öbek work_memkullanabilir.

work_mem izleme ve ayarlama

Öncelikle sıralama veya karma işlemleriyle ilgili sorgu yürütme sürelerinin yavaş olması durumunda sisteminizin performansını sürekli izlemek ve gerektiği gibi ayarlamak work_mem önemlidir. Azure portalında bulunan araçları kullanarak performansı izlemenin yolları şunlardır:

  • Sorgu performansı içgörüleri: Geçici dosyalar oluşturan sorguları tanımlamak için Geçici dosyalara göre en çok kullanılan sorgular sekmesini denetleyin. Bu durum, öğesinin artırılmasına work_memyönelik olası bir gereksinim olduğunu gösterir.
  • Sorun giderme kılavuzları: Sorunlu sorguları tanımlamak için sorun giderme kılavuzlarındaki Yüksek geçici dosyalar sekmesini kullanın.
Ayrıntılı ayarlama

Parametresini work_mem yönetirken, genel bir değer ayarlamak yerine ayrıntılı ayarlama yaklaşımını benimsemek genellikle daha verimli olur. Bu yaklaşım, işlemlerin ve kullanıcıların belirli gereksinimlerine göre bellek ayırmanızı sağlar. Ayrıca yetersiz bellek sorunlarıyla karşılaşma riskini de en aza indirir. Bu konuda şu şekilde devam edebilirsiniz:

  • Kullanıcı düzeyi: Belirli bir kullanıcı öncelikle yoğun bellek kullanan toplama veya raporlama görevlerinde yer alıyorsa, söz konusu kullanıcının değerini özelleştirmeyi work_mem göz önünde bulundurun. ALTER ROLE Kullanıcının işlemlerinin performansını artırmak için komutunu kullanın.

  • İşlev/yordam düzeyi: Belirli işlevler veya yordamlar önemli miktarda geçici dosya oluşturuyorsa, belirli işlev veya yordam düzeyinde değeri artırmak work_mem yararlı olabilir. Bu işlemlere ALTER FUNCTION özel olarak daha fazla bellek ayırmak için veya ALTER PROCEDURE komutunu kullanın.

  • Veritabanı düzeyi: Yalnızca belirli veritabanları yüksek sayıda geçici dosya oluşturuyorsa veritabanı düzeyinde değişiklik work_mem yapın.

  • Genel düzey: Sisteminizin analizi çoğu sorgunun küçük geçici dosyalar oluşturduğunu, ancak yalnızca birkaçının büyük dosyalar oluşturduğunu gösterirse, değeri genel olarak artırmak work_mem akıllıca olabilir. Bu eylem sorguların çoğunun bellekte işlenmesini kolaylaştırır, böylece disk tabanlı işlemlerden kaçınabilir ve verimliliği artırabilirsiniz. Ancak, artan work_mem değeri işleyebileceğinden emin olmak için her zaman dikkatli olun ve sunucunuzdaki bellek kullanımını izleyin.

Sıralama işlemleri için en düşük work_mem değerini belirleme

Özellikle sıralama işlemi sırasında geçici disk dosyaları oluşturan belirli bir sorgunun en düşük work_mem değerini bulmak için, sorgu yürütme sırasında oluşturulan geçici dosya boyutunu göz önünde bulundurarak başlayın. Örneğin, bir sorgu 20 MB geçici bir dosya oluşturuyorsa:

  1. psql veya tercih ettiğiniz PostgreSQL istemcisini kullanarak veritabanınıza bağlanın.
  2. Bellekte işlenirken ek üst bilgileri hesaba katmak için 20 MB'tan biraz daha yüksek bir başlangıç work_mem değeri ayarlayın. Şunun gibi bir komut kullanın: SET work_mem TO '25MB'.
  3. Aynı oturumda sorunlu sorguda komutunu çalıştırın EXPLAIN ANALYZE .
  4. için "Sort Method: quicksort Memory: xkB"çıktıyı gözden geçirin. değerini gösteriyorsa "external merge Disk: xkB", değeri artımlı olarak yükseltin work_mem ve görünene kadar "quicksort Memory" yeniden test edin. Sorgunun "quicksort Memory" artık bellekte çalıştığını belirten sinyallerin görünümü.
  5. Bu yöntem aracılığıyla değeri belirledikten sonra, operasyonel gereksinimlerinize uyacak şekilde genel olarak veya daha ayrıntılı düzeylerde (daha önce açıklandığı gibi) uygulayabilirsiniz.