Aracılığıyla paylaş


Kaynak Kullanımı / Bellek

autovacuum_work_mem

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description Her otomatik vakum çalışan işlemi tarafından kullanılacak en yüksek belleği ayarlar.
Veri türü tamsayı
Varsayılan değer -1
İzin verilen değerler -1-2097151
Parametre türü dynamic
Documentation autovacuum_work_mem

commit_timestamp_buffers

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description İşleme zaman damgası önbelleği için kullanılan ayrılmış arabellek havuzunun boyutunu ayarlar. Bu değeri, shared_buffers'ın bir kesri olarak belirlemek için 0 girin.
Veri türü tamsayı
Varsayılan değer 1024
İzin verilen değerler 0-131072
Parametre türü durağan
Documentation commit_timestamp_buffers

dinamik_paylaşımlı_bellek_türü

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description Kullanılan dinamik paylaşılan bellek uygulamasını seçer.
Veri türü enumeration
Varsayılan değer posix
İzin verilen değerler posix
Parametre türü salt okunur
Documentation dinamik_paylaşımlı_bellek_türü

hash_mem_multiplier

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description Karma tablolar için kullanılacak "work_mem" katı.
Veri türü sayısal
Varsayılan değer 2
İzin verilen değerler 1-1000
Parametre türü dynamic
Documentation hash_mem_multiplier

büyük sayfalar

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description Linux veya Windows'ta büyük sayfaların kullanımı.
Veri türü enumeration
Varsayılan değer try
İzin verilen değerler on,off,try
Parametre türü durağan
Documentation huge_pages

Description

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:

  • Bellek yönetimi görevleriyle ilişkili ek yükü, çeviri lookaside buffer (TLB) hatalarının daha az olması gibi durumlarla 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.

Recommendations

  • Ö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 huge_pages tutunTRY.

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ı, shared_buffers de dahil olmak üzere paylaşılan bellek ayarlarında yapılan değişiklikler sonucunda otomatik olarak ayarlanır.

büyük_sayfa_boyutu

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description İstenmesi gereken büyük sayfa boyutu.
Veri türü tamsayı
Varsayılan değer 0
İzin verilen değerler 0
Parametre türü salt okunur
Documentation huge_page_size (büyük sayfa boyutu)

io_combine_limit

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description Veri okuma ve yazma boyutu sınırı.
Veri türü tamsayı
Varsayılan değer 16
İzin verilen değerler 1-128
Parametre türü dynamic
Documentation io_combine_limit

io_max_combine_limit

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description Sunucu genelinde io_combine_limit'i sınırlayan sınır.
Veri türü tamsayı
Varsayılan değer 16
İzin verilen değerler 1-128
Parametre türü dynamic
Documentation io_max_combine_limit

io_maksimum_eşzamanlılık

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description Bir prosesin aynı anda yürütebileceği maksimum IO sayısı.
Veri türü tamsayı
Varsayılan değer 64
İzin verilen değerler -1-1024
Parametre türü durağan
Documentation io_max_concurrency

io_method

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description Eşzamanlı olmayan girdi/çıktı yürütme yöntemini seçer.
Veri türü enumeration
Varsayılan değer worker
İzin verilen değerler worker,sync
Parametre türü durağan
Documentation io_method

io_workers

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description io_method=worker için G/Ç işçi süreçlerinin sayısı.
Veri türü tamsayı
Varsayılan değer 3
İzin verilen değerler 1-32
Parametre türü dynamic
Documentation io_workers

logical_decoding_work_mem

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description Mantıksal kod çözme için kullanılacak en yüksek belleği ayarlar. Bu kadar bellek, diske dökülmeden önce her iç yeniden sıralama arabelleği tarafından kullanılabilir.
Veri türü tamsayı
Varsayılan değer 65536
İzin verilen değerler 64-2147483647
Parametre türü dynamic
Documentation logical_decoding_work_mem

maintenance_work_mem

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description Bakım işlemleri için kullanılacak en yüksek belleği ayarlar. Bu, VACUUM ve CREATE INDEX gibi işlemleri içerir.
Veri türü tamsayı
Varsayılan değer Sunucuya ayrılan kaynaklara (sanal çekirdekler, RAM veya disk alanı) bağlıdır.
İzin verilen değerler 1024-2097151
Parametre türü dynamic
Documentation maintenance_work_mem

Description

maintenance_work_mem PostgreSQL'deki bir yapılandırma parametresidir. , VACUUMve CREATE INDEXgibi ALTER TABLEbakı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.

! [NOT] Aşırı agresif değerlerin ayarlanması maintenance_work_mem düzenli aralıklarla sistemde bellek yetersiz hatasına neden olabilir. Bu parametrede değişiklik yapmadan önce sunucuda kullanılabilir bellek miktarını ve daha önce açıklanan görevler için bellek ayırabilecek eşzamanlı işlemlerin sayısını anlamak son derece önemlidir.

Önemli noktalar

  • Vakum bellek üst sınırı: Ölü kümelerin temizlenmesini artırarak hızlandırmak istiyorsanız, ölü küme tanımlayıcılarını toplamak için maintenance_work_mem yerleşik bir sınırlama olduğunu 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 99.328 KiB
4 GiB 157.696 KiB
8 GiB 216.064 KiB
16 GiB 274.432 KiB
32 GiB 332.800 KiB
48 GiB 367.616 KiB
64 GiB 392.192 KiB
80 GiB 410.624 KiB
128 GiB 450.560 KiB
160 GiB 468.992 KiB
192 GiB 484.352 KiB
256 GiB 508.928 KiB
384 GiB 542.720 KiB
432 GiB 552.960 KiB
672 GiB 590.848 KiB

max_prepared_transactions (en fazla hazırlıklı işlemler)

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description Eşzamanlı olarak hazırlanmış en fazla işlem sayısını ayarlar.
Veri türü tamsayı
Varsayılan değer 0
İzin verilen değerler 0-262143
Parametre türü durağan
Documentation max_prepared_transactions

maksimum yığın derinliği

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description Maksimum yığın derinliğini kilobayt olarak ayarlar.
Veri türü tamsayı
Varsayılan değer 2048
İzin verilen değerler 2048
Parametre türü salt okunur
Documentation max_stack_depth

min_dinamik_paylaşımlı_bellek

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description Başlangıçta ayrılmış dinamik paylaşılan bellek miktarı.
Veri türü tamsayı
Varsayılan değer 0
İzin verilen değerler 0
Parametre türü salt okunur
Documentation min_dynamic_shared_memory

multixact_member_buffers

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description MultiXact üye önbelleği için kullanılan özel buffer havuzunun boyutunu ayarlar.
Veri türü tamsayı
Varsayılan değer 32
İzin verilen değerler 16-131072
Parametre türü durağan
Documentation multixact_member_buffers

multixact_offset_buffers

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description MultiXact öteleme önbelleği için kullanılan ayrılmış arabellek havuzunun boyutunu ayarlar.
Veri türü tamsayı
Varsayılan değer 16
İzin verilen değerler 16-131072
Parametre türü durağan
Documentation multixact_offset_buffers

notify_buffers

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description LISTEN/NOTIFY ileti önbelleği için kullanılan ayrılmış arabellek havuzunun boyutunu ayarlar.
Veri türü tamsayı
Varsayılan değer 16
İzin verilen değerler 16-131072
Parametre türü durağan
Documentation notify_buffers

serileştirilebilir_yığınlar

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description Serileştirilebilir işlem önbelleği için kullanılan ayrılmış arabellek havuzunun boyutunu ayarlar.
Veri türü tamsayı
Varsayılan değer 32
İzin verilen değerler 16-131072
Parametre türü durağan
Documentation serializable_buffers

shared_buffers

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description Sunucu tarafından kullanılan paylaşılan bellek arabelleklerinin sayısını ayarlar.
Veri türü tamsayı
Varsayılan değer Sunucuya ayrılan kaynaklara (sanal çekirdekler, RAM veya disk alanı) bağlıdır.
İzin verilen değerler 16-1073741823
Parametre türü durağan
Documentation shared_buffers

Description

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 kontrol eder. 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, shared_buffers değerini hesaplamak için kullanılan formül 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

paylaşilan_bellek_türü

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description Ana paylaşılan bellek bölgesi için kullanılan paylaşılan bellek uygulamasını seçer.
Veri türü enumeration
Varsayılan değer mmap
İzin verilen değerler mmap
Parametre türü salt okunur
Documentation paylaşımlı bellek türü

subtransaction_buffers

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description Alt aktarım önbelleği için kullanılan ayrılmış arabellek havuzunun boyutunu ayarlar. Bu değeri, shared_buffers'ın bir kesri olarak belirlemek için 0 girin.
Veri türü tamsayı
Varsayılan değer 1024
İzin verilen değerler 0-131072
Parametre türü durağan
Documentation subtransaction_buffers

geçici ara bellekler

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description Oturum başına kullanılan maksimum geçici arabellek sayısını ayarlar.
Veri türü tamsayı
Varsayılan değer 1024
İzin verilen değerler 100-1073741823
Parametre türü dynamic
Documentation temp_buffers

işlem tamponları

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description İşlem durumu önbelleği için kullanılan ayrılmış arabellek havuzunun boyutunu ayarlar. Bu değeri, shared_buffers'ın bir kesri olarak belirlemek için 0 girin.
Veri türü tamsayı
Varsayılan değer 1024
İzin verilen değerler 0-131072
Parametre türü durağan
Documentation işlem_arabellekleri

vakum tampon kullanım sınırı

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description VACUUM, ANALYZE ve autovacuum için arabellek havuzu boyutunu ayarlar.
Veri türü tamsayı
Varsayılan değer 2048
İzin verilen değerler 0-16777216
Parametre türü dynamic
Documentation vakum_tampon_kullanım_sınırı

work_mem

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description Sorgu çalışma alanları için kullanılacak en yüksek belleği ayarlar. Bu kadar bellek, geçici disk dosyalarına geçmeden önce her iç sıralama işlemi ve karma tablosu tarafından kullanılabilir.
Veri türü tamsayı
Varsayılan değer 4096
İzin verilen değerler 4096-2097151
Parametre türü dynamic
Documentation work_mem

Description

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 verilebilir.

Paylaşılan bellek alanındaki paylaşılan arabelleklerin aksine, work_mem oturum başına veya sorgu başına ayrılan özel bellek alanında bulunur. 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, shared_buffers tarafından kullanılan paylaşılan bellek alanından ayrı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'in izlenmesi ve ayarlanması

Ö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, work_mem öğesinin artırılması için 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 özel olarak daha fazla bellek ayırmak için ALTER FUNCTION 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. "Sort Method: quicksort Memory: xkB" çıktıyı gözden geçirin. Eğer "external merge Disk: xkB" değerini gösteriyorsa, work_mem değerini artımlı olarak yükseltin ve "quicksort Memory" görünene kadar yeniden test edin. Sorgunun artık bellekte çalıştığını gösteren "quicksort Memory" 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

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description Her otomatik vakum çalışan işlemi tarafından kullanılacak en yüksek belleği ayarlar.
Veri türü tamsayı
Varsayılan değer -1
İzin verilen değerler -1-2097151
Parametre türü dynamic
Documentation autovacuum_work_mem

commit_timestamp_buffers

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description İşleme zaman damgası önbelleği için kullanılan ayrılmış arabellek havuzunun boyutunu ayarlar. Bu değeri, shared_buffers'ın bir kesri olarak belirlemek için 0 girin.
Veri türü tamsayı
Varsayılan değer 1024
İzin verilen değerler 0-131072
Parametre türü durağan
Documentation commit_timestamp_buffers

dinamik_paylaşımlı_bellek_türü

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description Kullanılan dinamik paylaşılan bellek uygulamasını seçer.
Veri türü enumeration
Varsayılan değer posix
İzin verilen değerler posix
Parametre türü salt okunur
Documentation dinamik_paylaşımlı_bellek_türü

hash_mem_multiplier

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description Karma tablolar için kullanılacak "work_mem" katı.
Veri türü sayısal
Varsayılan değer 2
İzin verilen değerler 1-1000
Parametre türü dynamic
Documentation hash_mem_multiplier

büyük sayfalar

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description Linux veya Windows'ta büyük sayfaların kullanımı.
Veri türü enumeration
Varsayılan değer try
İzin verilen değerler on,off,try
Parametre türü durağan
Documentation huge_pages

Description

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:

  • Bellek yönetimi görevleriyle ilişkili ek yükü, çeviri lookaside buffer (TLB) hatalarının daha az olması gibi durumlarla 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.

Recommendations

  • Ö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 huge_pages tutunTRY.

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ı, shared_buffers de dahil olmak üzere paylaşılan bellek ayarlarında yapılan değişiklikler sonucunda otomatik olarak ayarlanır.

büyük_sayfa_boyutu

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description İstenmesi gereken büyük sayfa boyutu.
Veri türü tamsayı
Varsayılan değer 0
İzin verilen değerler 0
Parametre türü salt okunur
Documentation huge_page_size (büyük sayfa boyutu)

io_combine_limit

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description Veri okuma ve yazma boyutu sınırı.
Veri türü tamsayı
Varsayılan değer 16
İzin verilen değerler 16
Parametre türü salt okunur
Documentation io_combine_limit

logical_decoding_work_mem

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description Mantıksal kod çözme için kullanılacak en yüksek belleği ayarlar. Bu kadar bellek, diske dökülmeden önce her iç yeniden sıralama arabelleği tarafından kullanılabilir.
Veri türü tamsayı
Varsayılan değer 65536
İzin verilen değerler 64-2147483647
Parametre türü dynamic
Documentation logical_decoding_work_mem

maintenance_work_mem

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description Bakım işlemleri için kullanılacak en yüksek belleği ayarlar. Bu, VACUUM ve CREATE INDEX gibi işlemleri içerir.
Veri türü tamsayı
Varsayılan değer Sunucuya ayrılan kaynaklara (sanal çekirdekler, RAM veya disk alanı) bağlıdır.
İzin verilen değerler 1024-2097151
Parametre türü dynamic
Documentation maintenance_work_mem

Description

maintenance_work_mem PostgreSQL'deki bir yapılandırma parametresidir. , VACUUMve CREATE INDEXgibi ALTER TABLEbakı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.

! [NOT] Aşırı agresif değerlerin ayarlanması maintenance_work_mem düzenli aralıklarla sistemde bellek yetersiz hatasına neden olabilir. Bu parametrede değişiklik yapmadan önce sunucuda kullanılabilir bellek miktarını ve daha önce açıklanan görevler için bellek ayırabilecek eşzamanlı işlemlerin sayısını anlamak son derece önemlidir.

Önemli noktalar

  • Vakum bellek üst sınırı: Ölü kümelerin temizlenmesini artırarak hızlandırmak istiyorsanız, ölü küme tanımlayıcılarını toplamak için maintenance_work_mem yerleşik bir sınırlama olduğunu 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 99.328 KiB
4 GiB 157.696 KiB
8 GiB 216.064 KiB
16 GiB 274.432 KiB
32 GiB 332.800 KiB
48 GiB 367.616 KiB
64 GiB 392.192 KiB
80 GiB 410.624 KiB
128 GiB 450.560 KiB
160 GiB 468.992 KiB
192 GiB 484.352 KiB
256 GiB 508.928 KiB
384 GiB 542.720 KiB
432 GiB 552.960 KiB
672 GiB 590.848 KiB

max_prepared_transactions (en fazla hazırlıklı işlemler)

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description Eşzamanlı olarak hazırlanmış en fazla işlem sayısını ayarlar.
Veri türü tamsayı
Varsayılan değer 0
İzin verilen değerler 0-262143
Parametre türü durağan
Documentation max_prepared_transactions

maksimum yığın derinliği

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description Maksimum yığın derinliğini kilobayt olarak ayarlar.
Veri türü tamsayı
Varsayılan değer 2048
İzin verilen değerler 2048
Parametre türü salt okunur
Documentation max_stack_depth

min_dinamik_paylaşımlı_bellek

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description Başlangıçta ayrılmış dinamik paylaşılan bellek miktarı.
Veri türü tamsayı
Varsayılan değer 0
İzin verilen değerler 0
Parametre türü salt okunur
Documentation min_dynamic_shared_memory

multixact_member_buffers

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description MultiXact üye önbelleği için kullanılan özel buffer havuzunun boyutunu ayarlar.
Veri türü tamsayı
Varsayılan değer 32
İzin verilen değerler 16-131072
Parametre türü durağan
Documentation multixact_member_buffers

multixact_offset_buffers

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description MultiXact öteleme önbelleği için kullanılan ayrılmış arabellek havuzunun boyutunu ayarlar.
Veri türü tamsayı
Varsayılan değer 16
İzin verilen değerler 16-131072
Parametre türü durağan
Documentation multixact_offset_buffers

notify_buffers

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description LISTEN/NOTIFY ileti önbelleği için kullanılan ayrılmış arabellek havuzunun boyutunu ayarlar.
Veri türü tamsayı
Varsayılan değer 16
İzin verilen değerler 16-131072
Parametre türü durağan
Documentation notify_buffers

serileştirilebilir_yığınlar

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description Serileştirilebilir işlem önbelleği için kullanılan ayrılmış arabellek havuzunun boyutunu ayarlar.
Veri türü tamsayı
Varsayılan değer 32
İzin verilen değerler 16-131072
Parametre türü durağan
Documentation serializable_buffers

shared_buffers

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description Sunucu tarafından kullanılan paylaşılan bellek arabelleklerinin sayısını ayarlar.
Veri türü tamsayı
Varsayılan değer Sunucuya ayrılan kaynaklara (sanal çekirdekler, RAM veya disk alanı) bağlıdır.
İzin verilen değerler 16-1073741823
Parametre türü durağan
Documentation shared_buffers

Description

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 kontrol eder. 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, shared_buffers değerini hesaplamak için kullanılan formül 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

paylaşilan_bellek_türü

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description Ana paylaşılan bellek bölgesi için kullanılan paylaşılan bellek uygulamasını seçer.
Veri türü enumeration
Varsayılan değer mmap
İzin verilen değerler mmap
Parametre türü salt okunur
Documentation paylaşımlı bellek türü

subtransaction_buffers

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description Alt aktarım önbelleği için kullanılan ayrılmış arabellek havuzunun boyutunu ayarlar. Bu değeri, shared_buffers'ın bir kesri olarak belirlemek için 0 girin.
Veri türü tamsayı
Varsayılan değer 1024
İzin verilen değerler 0-131072
Parametre türü durağan
Documentation subtransaction_buffers

geçici ara bellekler

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description Oturum başına kullanılan maksimum geçici arabellek sayısını ayarlar.
Veri türü tamsayı
Varsayılan değer 1024
İzin verilen değerler 100-1073741823
Parametre türü dynamic
Documentation temp_buffers

işlem tamponları

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description İşlem durumu önbelleği için kullanılan ayrılmış arabellek havuzunun boyutunu ayarlar. Bu değeri, shared_buffers'ın bir kesri olarak belirlemek için 0 girin.
Veri türü tamsayı
Varsayılan değer 1024
İzin verilen değerler 0-131072
Parametre türü durağan
Documentation işlem_arabellekleri

vakum tampon kullanım sınırı

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description VACUUM, ANALYZE ve autovacuum için arabellek havuzu boyutunu ayarlar.
Veri türü tamsayı
Varsayılan değer 2048
İzin verilen değerler 0-16777216
Parametre türü dynamic
Documentation vakum_tampon_kullanım_sınırı

work_mem

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description Sorgu çalışma alanları için kullanılacak en yüksek belleği ayarlar. Bu kadar bellek, geçici disk dosyalarına geçmeden önce her iç sıralama işlemi ve karma tablosu tarafından kullanılabilir.
Veri türü tamsayı
Varsayılan değer 4096
İzin verilen değerler 4096-2097151
Parametre türü dynamic
Documentation work_mem

Description

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 verilebilir.

Paylaşılan bellek alanındaki paylaşılan arabelleklerin aksine, work_mem oturum başına veya sorgu başına ayrılan özel bellek alanında bulunur. 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, shared_buffers tarafından kullanılan paylaşılan bellek alanından ayrı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'in izlenmesi ve ayarlanması

Ö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, work_mem öğesinin artırılması için 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 özel olarak daha fazla bellek ayırmak için ALTER FUNCTION 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. "Sort Method: quicksort Memory: xkB" çıktıyı gözden geçirin. Eğer "external merge Disk: xkB" değerini gösteriyorsa, work_mem değerini artımlı olarak yükseltin ve "quicksort Memory" görünene kadar yeniden test edin. Sorgunun artık bellekte çalıştığını gösteren "quicksort Memory" 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

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description Her otomatik vakum çalışan işlemi tarafından kullanılacak en yüksek belleği ayarlar.
Veri türü tamsayı
Varsayılan değer -1
İzin verilen değerler -1-2097151
Parametre türü dynamic
Documentation autovacuum_work_mem

dinamik_paylaşımlı_bellek_türü

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description Kullanılan dinamik paylaşılan bellek uygulamasını seçer.
Veri türü enumeration
Varsayılan değer posix
İzin verilen değerler posix
Parametre türü salt okunur
Documentation dinamik_paylaşımlı_bellek_türü

hash_mem_multiplier

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description Karma tablolar için kullanılacak work_mem katı.
Veri türü sayısal
Varsayılan değer 2
İzin verilen değerler 1-1000
Parametre türü dynamic
Documentation hash_mem_multiplier

büyük sayfalar

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description 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ü enumeration
Varsayılan değer try
İzin verilen değerler on,off,try
Parametre türü durağan
Documentation huge_pages

Description

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:

  • Bellek yönetimi görevleriyle ilişkili ek yükü, çeviri lookaside buffer (TLB) hatalarının daha az olması gibi durumlarla 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.

Recommendations

  • Ö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 huge_pages tutunTRY.

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ı, shared_buffers de dahil olmak üzere paylaşılan bellek ayarlarında yapılan değişiklikler sonucunda otomatik olarak ayarlanır.

büyük_sayfa_boyutu

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description İstenmesi gereken büyük sayfa boyutu.
Veri türü tamsayı
Varsayılan değer 0
İzin verilen değerler 0
Parametre türü salt okunur
Documentation huge_page_size (büyük sayfa boyutu)

logical_decoding_work_mem

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description Mantıksal kod çözme için kullanılacak en yüksek belleği ayarlar.
Veri türü tamsayı
Varsayılan değer 65536
İzin verilen değerler 64-2147483647
Parametre türü dynamic
Documentation logical_decoding_work_mem

maintenance_work_mem

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

Description

maintenance_work_mem PostgreSQL'deki bir yapılandırma parametresidir. , VACUUMve CREATE INDEXgibi ALTER TABLEbakı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.

! [NOT] Aşırı agresif değerlerin ayarlanması maintenance_work_mem düzenli aralıklarla sistemde bellek yetersiz hatasına neden olabilir. Bu parametrede değişiklik yapmadan önce sunucuda kullanılabilir bellek miktarını ve daha önce açıklanan görevler için bellek ayırabilecek eşzamanlı işlemlerin sayısını anlamak son derece önemlidir.

Önemli noktalar

  • Vakum bellek üst sınırı: Ölü kümelerin temizlenmesini artırarak hızlandırmak istiyorsanız, ölü küme tanımlayıcılarını toplamak için maintenance_work_mem yerleşik bir sınırlama olduğunu 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 99.328 KiB
4 GiB 157.696 KiB
8 GiB 216.064 KiB
16 GiB 274.432 KiB
32 GiB 332.800 KiB
48 GiB 367.616 KiB
64 GiB 392.192 KiB
80 GiB 410.624 KiB
128 GiB 450.560 KiB
160 GiB 468.992 KiB
192 GiB 484.352 KiB
256 GiB 508.928 KiB
384 GiB 542.720 KiB
432 GiB 552.960 KiB
672 GiB 590.848 KiB

max_prepared_transactions (en fazla hazırlıklı işlemler)

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description 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ü tamsayı
Varsayılan değer 0
İzin verilen değerler 0-262143
Parametre türü durağan
Documentation max_prepared_transactions

maksimum yığın derinliği

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description Maksimum yığın derinliğini kilobayt olarak ayarlar.
Veri türü tamsayı
Varsayılan değer 2048
İzin verilen değerler 2048
Parametre türü salt okunur
Documentation max_stack_depth

min_dinamik_paylaşımlı_bellek

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description Başlangıçta ayrılmış dinamik paylaşılan bellek miktarı.
Veri türü tamsayı
Varsayılan değer 0
İzin verilen değerler 0
Parametre türü salt okunur
Documentation min_dynamic_shared_memory

shared_buffers

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description 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ü tamsayı
Varsayılan değer Sunucuya ayrılan kaynaklara (sanal çekirdekler, RAM veya disk alanı) bağlıdır.
İzin verilen değerler 16-1073741823
Parametre türü durağan
Documentation shared_buffers

Description

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 kontrol eder. 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, shared_buffers değerini hesaplamak için kullanılan formül 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

paylaşilan_bellek_türü

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description Ana paylaşılan bellek bölgesi için kullanılan paylaşılan bellek uygulamasını seçer.
Veri türü enumeration
Varsayılan değer mmap
İzin verilen değerler mmap
Parametre türü salt okunur
Documentation paylaşımlı bellek türü

geçici ara bellekler

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description Her veritabanı oturumu tarafından kullanılan en fazla geçici arabellek sayısını ayarlar.
Veri türü tamsayı
Varsayılan değer 1024
İzin verilen değerler 100-1073741823
Parametre türü dynamic
Documentation temp_buffers

vakum tampon kullanım sınırı

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description VACUUM, ANALYZE ve autovacuum için arabellek havuzu boyutunu ayarlar.
Veri türü tamsayı
Varsayılan değer 256
İzin verilen değerler 0-16777216
Parametre türü dynamic
Documentation vakum_tampon_kullanım_sınırı

work_mem

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description 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ü tamsayı
Varsayılan değer 4096
İzin verilen değerler 4096-2097151
Parametre türü dynamic
Documentation work_mem

Description

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 verilebilir.

Paylaşılan bellek alanındaki paylaşılan arabelleklerin aksine, work_mem oturum başına veya sorgu başına ayrılan özel bellek alanında bulunur. 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, shared_buffers tarafından kullanılan paylaşılan bellek alanından ayrı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'in izlenmesi ve ayarlanması

Ö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, work_mem öğesinin artırılması için 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 özel olarak daha fazla bellek ayırmak için ALTER FUNCTION 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. "Sort Method: quicksort Memory: xkB" çıktıyı gözden geçirin. Eğer "external merge Disk: xkB" değerini gösteriyorsa, work_mem değerini artımlı olarak yükseltin ve "quicksort Memory" görünene kadar yeniden test edin. Sorgunun artık bellekte çalıştığını gösteren "quicksort Memory" 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

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description Her otomatik vakum çalışan işlemi tarafından kullanılacak en yüksek belleği ayarlar.
Veri türü tamsayı
Varsayılan değer -1
İzin verilen değerler -1-2097151
Parametre türü dynamic
Documentation autovacuum_work_mem

dinamik_paylaşımlı_bellek_türü

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description Kullanılan dinamik paylaşılan bellek uygulamasını seçer.
Veri türü enumeration
Varsayılan değer posix
İzin verilen değerler posix
Parametre türü salt okunur
Documentation dinamik_paylaşımlı_bellek_türü

hash_mem_multiplier

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description Karma tablolar için kullanılacak work_mem katı.
Veri türü sayısal
Varsayılan değer 2
İzin verilen değerler 1-1000
Parametre türü dynamic
Documentation hash_mem_multiplier

büyük sayfalar

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description 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ü enumeration
Varsayılan değer try
İzin verilen değerler on,off,try
Parametre türü durağan
Documentation huge_pages

Description

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:

  • Bellek yönetimi görevleriyle ilişkili ek yükü, çeviri lookaside buffer (TLB) hatalarının daha az olması gibi durumlarla 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.

Recommendations

  • Ö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 huge_pages tutunTRY.

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ı, shared_buffers de dahil olmak üzere paylaşılan bellek ayarlarında yapılan değişiklikler sonucunda otomatik olarak ayarlanır.

büyük_sayfa_boyutu

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description İstenmesi gereken büyük sayfa boyutu.
Veri türü tamsayı
Varsayılan değer 0
İzin verilen değerler 0
Parametre türü salt okunur
Documentation huge_page_size (büyük sayfa boyutu)

logical_decoding_work_mem

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description Mantıksal kod çözme için kullanılacak en yüksek belleği ayarlar.
Veri türü tamsayı
Varsayılan değer 65536
İzin verilen değerler 64-2147483647
Parametre türü dynamic
Documentation logical_decoding_work_mem

maintenance_work_mem

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

Description

maintenance_work_mem PostgreSQL'deki bir yapılandırma parametresidir. , VACUUMve CREATE INDEXgibi ALTER TABLEbakı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.

! [NOT] Aşırı agresif değerlerin ayarlanması maintenance_work_mem düzenli aralıklarla sistemde bellek yetersiz hatasına neden olabilir. Bu parametrede değişiklik yapmadan önce sunucuda kullanılabilir bellek miktarını ve daha önce açıklanan görevler için bellek ayırabilecek eşzamanlı işlemlerin sayısını anlamak son derece önemlidir.

Önemli noktalar

  • Vakum bellek üst sınırı: Ölü kümelerin temizlenmesini artırarak hızlandırmak istiyorsanız, ölü küme tanımlayıcılarını toplamak için maintenance_work_mem yerleşik bir sınırlama olduğunu 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 99.328 KiB
4 GiB 157.696 KiB
8 GiB 216.064 KiB
16 GiB 274.432 KiB
32 GiB 332.800 KiB
48 GiB 367.616 KiB
64 GiB 392.192 KiB
80 GiB 410.624 KiB
128 GiB 450.560 KiB
160 GiB 468.992 KiB
192 GiB 484.352 KiB
256 GiB 508.928 KiB
384 GiB 542.720 KiB
432 GiB 552.960 KiB
672 GiB 590.848 KiB

max_prepared_transactions (en fazla hazırlıklı işlemler)

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description 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ü tamsayı
Varsayılan değer 0
İzin verilen değerler 0-262143
Parametre türü durağan
Documentation max_prepared_transactions

maksimum yığın derinliği

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description Maksimum yığın derinliğini kilobayt olarak ayarlar.
Veri türü tamsayı
Varsayılan değer 2048
İzin verilen değerler 2048
Parametre türü salt okunur
Documentation max_stack_depth

min_dinamik_paylaşımlı_bellek

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description Başlangıçta ayrılmış dinamik paylaşılan bellek miktarı.
Veri türü tamsayı
Varsayılan değer 0
İzin verilen değerler 0
Parametre türü salt okunur
Documentation min_dynamic_shared_memory

shared_buffers

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description 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ü tamsayı
Varsayılan değer Sunucuya ayrılan kaynaklara (sanal çekirdekler, RAM veya disk alanı) bağlıdır.
İzin verilen değerler 16-1073741823
Parametre türü durağan
Documentation shared_buffers

Description

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 kontrol eder. 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, shared_buffers değerini hesaplamak için kullanılan formül 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

paylaşilan_bellek_türü

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description Ana paylaşılan bellek bölgesi için kullanılan paylaşılan bellek uygulamasını seçer.
Veri türü enumeration
Varsayılan değer mmap
İzin verilen değerler mmap
Parametre türü salt okunur
Documentation paylaşımlı bellek türü

geçici ara bellekler

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description Her veritabanı oturumu tarafından kullanılan en fazla geçici arabellek sayısını ayarlar.
Veri türü tamsayı
Varsayılan değer 1024
İzin verilen değerler 100-1073741823
Parametre türü dynamic
Documentation temp_buffers

work_mem

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description 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ü tamsayı
Varsayılan değer 4096
İzin verilen değerler 4096-2097151
Parametre türü dynamic
Documentation work_mem

Description

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 verilebilir.

Paylaşılan bellek alanındaki paylaşılan arabelleklerin aksine, work_mem oturum başına veya sorgu başına ayrılan özel bellek alanında bulunur. 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, shared_buffers tarafından kullanılan paylaşılan bellek alanından ayrı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'in izlenmesi ve ayarlanması

Ö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, work_mem öğesinin artırılması için 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 özel olarak daha fazla bellek ayırmak için ALTER FUNCTION 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. "Sort Method: quicksort Memory: xkB" çıktıyı gözden geçirin. Eğer "external merge Disk: xkB" değerini gösteriyorsa, work_mem değerini artımlı olarak yükseltin ve "quicksort Memory" görünene kadar yeniden test edin. Sorgunun artık bellekte çalıştığını gösteren "quicksort Memory" 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

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description Her otomatik vakum çalışan işlemi tarafından kullanılacak en yüksek belleği ayarlar.
Veri türü tamsayı
Varsayılan değer -1
İzin verilen değerler -1-2097151
Parametre türü dynamic
Documentation autovacuum_work_mem

dinamik_paylaşımlı_bellek_türü

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description Kullanılan dinamik paylaşılan bellek uygulamasını seçer.
Veri türü enumeration
Varsayılan değer posix
İzin verilen değerler posix
Parametre türü salt okunur
Documentation dinamik_paylaşımlı_bellek_türü

hash_mem_multiplier

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description Karma tablolar için kullanılacak work_mem katı.
Veri türü sayısal
Varsayılan değer 1
İzin verilen değerler 1-1000
Parametre türü dynamic
Documentation hash_mem_multiplier

büyük sayfalar

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description 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ü enumeration
Varsayılan değer try
İzin verilen değerler on,off,try
Parametre türü durağan
Documentation huge_pages

Description

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:

  • Bellek yönetimi görevleriyle ilişkili ek yükü, çeviri lookaside buffer (TLB) hatalarının daha az olması gibi durumlarla 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.

Recommendations

  • Ö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 huge_pages tutunTRY.

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ı, shared_buffers de dahil olmak üzere paylaşılan bellek ayarlarında yapılan değişiklikler sonucunda otomatik olarak ayarlanır.

büyük_sayfa_boyutu

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description İstenmesi gereken büyük sayfa boyutu.
Veri türü tamsayı
Varsayılan değer 0
İzin verilen değerler 0
Parametre türü salt okunur
Documentation huge_page_size (büyük sayfa boyutu)

logical_decoding_work_mem

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description Mantıksal kod çözme için kullanılacak en yüksek belleği ayarlar.
Veri türü tamsayı
Varsayılan değer 65536
İzin verilen değerler 64-2147483647
Parametre türü dynamic
Documentation logical_decoding_work_mem

maintenance_work_mem

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

Description

maintenance_work_mem PostgreSQL'deki bir yapılandırma parametresidir. , VACUUMve CREATE INDEXgibi ALTER TABLEbakı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.

! [NOT] Aşırı agresif değerlerin ayarlanması maintenance_work_mem düzenli aralıklarla sistemde bellek yetersiz hatasına neden olabilir. Bu parametrede değişiklik yapmadan önce sunucuda kullanılabilir bellek miktarını ve daha önce açıklanan görevler için bellek ayırabilecek eşzamanlı işlemlerin sayısını anlamak son derece önemlidir.

Önemli noktalar

  • Vakum bellek üst sınırı: Ölü kümelerin temizlenmesini artırarak hızlandırmak istiyorsanız, ölü küme tanımlayıcılarını toplamak için maintenance_work_mem yerleşik bir sınırlama olduğunu 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 99.328 KiB
4 GiB 157.696 KiB
8 GiB 216.064 KiB
16 GiB 274.432 KiB
32 GiB 332.800 KiB
48 GiB 367.616 KiB
64 GiB 392.192 KiB
80 GiB 410.624 KiB
128 GiB 450.560 KiB
160 GiB 468.992 KiB
192 GiB 484.352 KiB
256 GiB 508.928 KiB
384 GiB 542.720 KiB
432 GiB 552.960 KiB
672 GiB 590.848 KiB

max_prepared_transactions (en fazla hazırlıklı işlemler)

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description 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ü tamsayı
Varsayılan değer 0
İzin verilen değerler 0-262143
Parametre türü durağan
Documentation max_prepared_transactions

maksimum yığın derinliği

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description Maksimum yığın derinliğini kilobayt olarak ayarlar.
Veri türü tamsayı
Varsayılan değer 2048
İzin verilen değerler 2048
Parametre türü salt okunur
Documentation max_stack_depth

min_dinamik_paylaşımlı_bellek

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description Başlangıçta ayrılmış dinamik paylaşılan bellek miktarı.
Veri türü tamsayı
Varsayılan değer 0
İzin verilen değerler 0
Parametre türü salt okunur
Documentation min_dynamic_shared_memory

shared_buffers

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description 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ü tamsayı
Varsayılan değer Sunucuya ayrılan kaynaklara (sanal çekirdekler, RAM veya disk alanı) bağlıdır.
İzin verilen değerler 16-1073741823
Parametre türü durağan
Documentation shared_buffers

Description

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 kontrol eder. 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, shared_buffers değerini hesaplamak için kullanılan formül 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

paylaşilan_bellek_türü

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description Ana paylaşılan bellek bölgesi için kullanılan paylaşılan bellek uygulamasını seçer.
Veri türü enumeration
Varsayılan değer mmap
İzin verilen değerler mmap
Parametre türü salt okunur
Documentation paylaşımlı bellek türü

geçici ara bellekler

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description Her veritabanı oturumu tarafından kullanılan en fazla geçici arabellek sayısını ayarlar.
Veri türü tamsayı
Varsayılan değer 1024
İzin verilen değerler 100-1073741823
Parametre türü dynamic
Documentation temp_buffers

work_mem

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description 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ü tamsayı
Varsayılan değer 4096
İzin verilen değerler 4096-2097151
Parametre türü dynamic
Documentation work_mem

Description

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 verilebilir.

Paylaşılan bellek alanındaki paylaşılan arabelleklerin aksine, work_mem oturum başına veya sorgu başına ayrılan özel bellek alanında bulunur. 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, shared_buffers tarafından kullanılan paylaşılan bellek alanından ayrı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'in izlenmesi ve ayarlanması

Ö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, work_mem öğesinin artırılması için 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 özel olarak daha fazla bellek ayırmak için ALTER FUNCTION 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. "Sort Method: quicksort Memory: xkB" çıktıyı gözden geçirin. Eğer "external merge Disk: xkB" değerini gösteriyorsa, work_mem değerini artımlı olarak yükseltin ve "quicksort Memory" görünene kadar yeniden test edin. Sorgunun artık bellekte çalıştığını gösteren "quicksort Memory" 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

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description Her otomatik vakum çalışan işlemi tarafından kullanılacak en yüksek belleği ayarlar.
Veri türü tamsayı
Varsayılan değer -1
İzin verilen değerler -1-2097151
Parametre türü dynamic
Documentation autovacuum_work_mem

dinamik_paylaşımlı_bellek_türü

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description Kullanılan dinamik paylaşılan bellek uygulamasını seçer.
Veri türü enumeration
Varsayılan değer posix
İzin verilen değerler posix
Parametre türü salt okunur
Documentation dinamik_paylaşımlı_bellek_türü

hash_mem_multiplier

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description Karma tablolar için kullanılacak work_mem katı.
Veri türü sayısal
Varsayılan değer 1
İzin verilen değerler 1-1000
Parametre türü dynamic
Documentation hash_mem_multiplier

büyük sayfalar

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description 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ü enumeration
Varsayılan değer try
İzin verilen değerler on,off,try
Parametre türü durağan
Documentation huge_pages

Description

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:

  • Bellek yönetimi görevleriyle ilişkili ek yükü, çeviri lookaside buffer (TLB) hatalarının daha az olması gibi durumlarla 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.

Recommendations

  • Ö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 huge_pages tutunTRY.

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ı, shared_buffers de dahil olmak üzere paylaşılan bellek ayarlarında yapılan değişiklikler sonucunda otomatik olarak ayarlanır.

logical_decoding_work_mem

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description Mantıksal kod çözme için kullanılacak en yüksek belleği ayarlar.
Veri türü tamsayı
Varsayılan değer 65536
İzin verilen değerler 64-2147483647
Parametre türü dynamic
Documentation logical_decoding_work_mem

maintenance_work_mem

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

Description

maintenance_work_mem PostgreSQL'deki bir yapılandırma parametresidir. , VACUUMve CREATE INDEXgibi ALTER TABLEbakı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.

! [NOT] Aşırı agresif değerlerin ayarlanması maintenance_work_mem düzenli aralıklarla sistemde bellek yetersiz hatasına neden olabilir. Bu parametrede değişiklik yapmadan önce sunucuda kullanılabilir bellek miktarını ve daha önce açıklanan görevler için bellek ayırabilecek eşzamanlı işlemlerin sayısını anlamak son derece önemlidir.

Önemli noktalar

  • Vakum bellek üst sınırı: Ölü kümelerin temizlenmesini artırarak hızlandırmak istiyorsanız, ölü küme tanımlayıcılarını toplamak için maintenance_work_mem yerleşik bir sınırlama olduğunu 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 99.328 KiB
4 GiB 157.696 KiB
8 GiB 216.064 KiB
16 GiB 274.432 KiB
32 GiB 332.800 KiB
48 GiB 367.616 KiB
64 GiB 392.192 KiB
80 GiB 410.624 KiB
128 GiB 450.560 KiB
160 GiB 468.992 KiB
192 GiB 484.352 KiB
256 GiB 508.928 KiB
384 GiB 542.720 KiB
432 GiB 552.960 KiB
672 GiB 590.848 KiB

max_prepared_transactions (en fazla hazırlıklı işlemler)

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description 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ü tamsayı
Varsayılan değer 0
İzin verilen değerler 0-262143
Parametre türü durağan
Documentation max_prepared_transactions

maksimum yığın derinliği

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description Maksimum yığın derinliğini kilobayt olarak ayarlar.
Veri türü tamsayı
Varsayılan değer 2048
İzin verilen değerler 2048
Parametre türü salt okunur
Documentation max_stack_depth

shared_buffers

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description 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ü tamsayı
Varsayılan değer Sunucuya ayrılan kaynaklara (sanal çekirdekler, RAM veya disk alanı) bağlıdır.
İzin verilen değerler 16-1073741823
Parametre türü durağan
Documentation shared_buffers

Description

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 kontrol eder. 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, shared_buffers değerini hesaplamak için kullanılan formül 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

paylaşilan_bellek_türü

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description Ana paylaşılan bellek bölgesi için kullanılan paylaşılan bellek uygulamasını seçer.
Veri türü enumeration
Varsayılan değer mmap
İzin verilen değerler mmap
Parametre türü salt okunur
Documentation paylaşımlı bellek türü

geçici ara bellekler

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description Her veritabanı oturumu tarafından kullanılan en fazla geçici arabellek sayısını ayarlar.
Veri türü tamsayı
Varsayılan değer 1024
İzin verilen değerler 100-1073741823
Parametre türü dynamic
Documentation temp_buffers

work_mem

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description 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ü tamsayı
Varsayılan değer 4096
İzin verilen değerler 4096-2097151
Parametre türü dynamic
Documentation work_mem

Description

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 verilebilir.

Paylaşılan bellek alanındaki paylaşılan arabelleklerin aksine, work_mem oturum başına veya sorgu başına ayrılan özel bellek alanında bulunur. 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, shared_buffers tarafından kullanılan paylaşılan bellek alanından ayrı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'in izlenmesi ve ayarlanması

Ö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, work_mem öğesinin artırılması için 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 özel olarak daha fazla bellek ayırmak için ALTER FUNCTION 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. "Sort Method: quicksort Memory: xkB" çıktıyı gözden geçirin. Eğer "external merge Disk: xkB" değerini gösteriyorsa, work_mem değerini artımlı olarak yükseltin ve "quicksort Memory" görünene kadar yeniden test edin. Sorgunun artık bellekte çalıştığını gösteren "quicksort Memory" 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

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description Her otomatik vakum çalışan işlemi tarafından kullanılacak en yüksek belleği ayarlar.
Veri türü tamsayı
Varsayılan değer -1
İzin verilen değerler -1-2097151
Parametre türü dynamic
Documentation autovacuum_work_mem

dinamik_paylaşımlı_bellek_türü

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description Kullanılan dinamik paylaşılan bellek uygulamasını seçer.
Veri türü enumeration
Varsayılan değer posix
İzin verilen değerler posix
Parametre türü salt okunur
Documentation dinamik_paylaşımlı_bellek_türü

hash_mem_multiplier

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description Karma tablolar için kullanılacak work_mem katı.
Veri türü sayısal
Varsayılan değer 1
İzin verilen değerler 1-1000
Parametre türü dynamic
Documentation hash_mem_multiplier

büyük sayfalar

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description 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ü enumeration
Varsayılan değer try
İzin verilen değerler on,off,try
Parametre türü durağan
Documentation huge_pages

Description

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:

  • Bellek yönetimi görevleriyle ilişkili ek yükü, çeviri lookaside buffer (TLB) hatalarının daha az olması gibi durumlarla 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.

Recommendations

  • Ö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 huge_pages tutunTRY.

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ı, shared_buffers de dahil olmak üzere paylaşılan bellek ayarlarında yapılan değişiklikler sonucunda otomatik olarak ayarlanır.

maintenance_work_mem

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

Description

maintenance_work_mem PostgreSQL'deki bir yapılandırma parametresidir. , VACUUMve CREATE INDEXgibi ALTER TABLEbakı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.

! [NOT] Aşırı agresif değerlerin ayarlanması maintenance_work_mem düzenli aralıklarla sistemde bellek yetersiz hatasına neden olabilir. Bu parametrede değişiklik yapmadan önce sunucuda kullanılabilir bellek miktarını ve daha önce açıklanan görevler için bellek ayırabilecek eşzamanlı işlemlerin sayısını anlamak son derece önemlidir.

Önemli noktalar

  • Vakum bellek üst sınırı: Ölü kümelerin temizlenmesini artırarak hızlandırmak istiyorsanız, ölü küme tanımlayıcılarını toplamak için maintenance_work_mem yerleşik bir sınırlama olduğunu 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 99.328 KiB
4 GiB 157.696 KiB
8 GiB 216.064 KiB
16 GiB 274.432 KiB
32 GiB 332.800 KiB
48 GiB 367.616 KiB
64 GiB 392.192 KiB
80 GiB 410.624 KiB
128 GiB 450.560 KiB
160 GiB 468.992 KiB
192 GiB 484.352 KiB
256 GiB 508.928 KiB
384 GiB 542.720 KiB
432 GiB 552.960 KiB
672 GiB 590.848 KiB

max_prepared_transactions (en fazla hazırlıklı işlemler)

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description 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ü tamsayı
Varsayılan değer 0
İzin verilen değerler 0-262143
Parametre türü durağan
Documentation max_prepared_transactions

maksimum yığın derinliği

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description Maksimum yığın derinliğini kilobayt olarak ayarlar.
Veri türü tamsayı
Varsayılan değer 2048
İzin verilen değerler 2048
Parametre türü salt okunur
Documentation max_stack_depth

shared_buffers

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description 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ü tamsayı
Varsayılan değer Sunucuya ayrılan kaynaklara (sanal çekirdekler, RAM veya disk alanı) bağlıdır.
İzin verilen değerler 16-1073741823
Parametre türü durağan
Documentation shared_buffers

Description

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 kontrol eder. 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, shared_buffers değerini hesaplamak için kullanılan formül 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

paylaşilan_bellek_türü

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description Ana paylaşılan bellek bölgesi için kullanılan paylaşılan bellek uygulamasını seçer.
Veri türü enumeration
Varsayılan değer mmap
İzin verilen değerler mmap
Parametre türü salt okunur
Documentation paylaşımlı bellek türü

geçici ara bellekler

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description Her veritabanı oturumu tarafından kullanılan en fazla geçici arabellek sayısını ayarlar.
Veri türü tamsayı
Varsayılan değer 1024
İzin verilen değerler 100-1073741823
Parametre türü dynamic
Documentation temp_buffers

work_mem

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description 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ü tamsayı
Varsayılan değer 4096
İzin verilen değerler 4096-2097151
Parametre türü dynamic
Documentation work_mem

Description

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 verilebilir.

Paylaşılan bellek alanındaki paylaşılan arabelleklerin aksine, work_mem oturum başına veya sorgu başına ayrılan özel bellek alanında bulunur. 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, shared_buffers tarafından kullanılan paylaşılan bellek alanından ayrı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'in izlenmesi ve ayarlanması

Ö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, work_mem öğesinin artırılması için 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 özel olarak daha fazla bellek ayırmak için ALTER FUNCTION 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. "Sort Method: quicksort Memory: xkB" çıktıyı gözden geçirin. Eğer "external merge Disk: xkB" değerini gösteriyorsa, work_mem değerini artımlı olarak yükseltin ve "quicksort Memory" görünene kadar yeniden test edin. Sorgunun artık bellekte çalıştığını gösteren "quicksort Memory" 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

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description Her otomatik vakum çalışan işlemi tarafından kullanılacak en yüksek belleği ayarlar.
Veri türü tamsayı
Varsayılan değer -1
İzin verilen değerler -1-2097151
Parametre türü dynamic
Documentation autovacuum_work_mem

dinamik_paylaşımlı_bellek_türü

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description Kullanılan dinamik paylaşılan bellek uygulamasını seçer.
Veri türü enumeration
Varsayılan değer posix
İzin verilen değerler posix
Parametre türü salt okunur
Documentation dinamik_paylaşımlı_bellek_türü

büyük sayfalar

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description 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ü enumeration
Varsayılan değer try
İzin verilen değerler on,off,try
Parametre türü durağan
Documentation huge_pages

Description

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:

  • Bellek yönetimi görevleriyle ilişkili ek yükü, çeviri lookaside buffer (TLB) hatalarının daha az olması gibi durumlarla 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.

Recommendations

  • Ö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 huge_pages tutunTRY.

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ı, shared_buffers de dahil olmak üzere paylaşılan bellek ayarlarında yapılan değişiklikler sonucunda otomatik olarak ayarlanır.

maintenance_work_mem

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

Description

maintenance_work_mem PostgreSQL'deki bir yapılandırma parametresidir. , VACUUMve CREATE INDEXgibi ALTER TABLEbakı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.

! [NOT] Aşırı agresif değerlerin ayarlanması maintenance_work_mem düzenli aralıklarla sistemde bellek yetersiz hatasına neden olabilir. Bu parametrede değişiklik yapmadan önce sunucuda kullanılabilir bellek miktarını ve daha önce açıklanan görevler için bellek ayırabilecek eşzamanlı işlemlerin sayısını anlamak son derece önemlidir.

Önemli noktalar

  • Vakum bellek üst sınırı: Ölü kümelerin temizlenmesini artırarak hızlandırmak istiyorsanız, ölü küme tanımlayıcılarını toplamak için maintenance_work_mem yerleşik bir sınırlama olduğunu 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 99.328 KiB
4 GiB 157.696 KiB
8 GiB 216.064 KiB
16 GiB 274.432 KiB
32 GiB 332.800 KiB
48 GiB 367.616 KiB
64 GiB 392.192 KiB
80 GiB 410.624 KiB
128 GiB 450.560 KiB
160 GiB 468.992 KiB
192 GiB 484.352 KiB
256 GiB 508.928 KiB
384 GiB 542.720 KiB
432 GiB 552.960 KiB
672 GiB 590.848 KiB

max_prepared_transactions (en fazla hazırlıklı işlemler)

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description 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ü tamsayı
Varsayılan değer 0
İzin verilen değerler 0-262143
Parametre türü durağan
Documentation max_prepared_transactions

maksimum yığın derinliği

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description Maksimum yığın derinliğini kilobayt olarak ayarlar.
Veri türü tamsayı
Varsayılan değer 2048
İzin verilen değerler 2048
Parametre türü salt okunur
Documentation max_stack_depth

shared_buffers

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description 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ü tamsayı
Varsayılan değer Sunucuya ayrılan kaynaklara (sanal çekirdekler, RAM veya disk alanı) bağlıdır.
İzin verilen değerler 16-1073741823
Parametre türü durağan
Documentation shared_buffers

Description

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 kontrol eder. 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, shared_buffers değerini hesaplamak için kullanılan formül 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

geçici ara bellekler

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description Her veritabanı oturumu tarafından kullanılan en fazla geçici arabellek sayısını ayarlar.
Veri türü tamsayı
Varsayılan değer 1024
İzin verilen değerler 100-1073741823
Parametre türü dynamic
Documentation temp_buffers

work_mem

Özellik Değer
Kategori Kaynak Kullanımı / Bellek
Description 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ü tamsayı
Varsayılan değer 4096
İzin verilen değerler 4096-2097151
Parametre türü dynamic
Documentation work_mem

Description

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 verilebilir.

Paylaşılan bellek alanındaki paylaşılan arabelleklerin aksine, work_mem oturum başına veya sorgu başına ayrılan özel bellek alanında bulunur. 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, shared_buffers tarafından kullanılan paylaşılan bellek alanından ayrı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'in izlenmesi ve ayarlanması

Ö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, work_mem öğesinin artırılması için 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 özel olarak daha fazla bellek ayırmak için ALTER FUNCTION 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. "Sort Method: quicksort Memory: xkB" çıktıyı gözden geçirin. Eğer "external merge Disk: xkB" değerini gösteriyorsa, work_mem değerini artımlı olarak yükseltin ve "quicksort Memory" görünene kadar yeniden test edin. Sorgunun artık bellekte çalıştığını gösteren "quicksort Memory" 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.