Kaynak Kullanımı / Bellek
autovacuum_work_mem
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | Her otomatik vakum çalışan işlemi tarafından kullanılacak en yüksek belleği ayarlar. |
Veri türü | integer |
Default value | -1 |
İzin verilen değerler | -1-2097151 |
Parametre türü | dynamic |
Belgeler | autovacuum_work_mem |
dynamic_shared_memory_type
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | Kullanılan dinamik paylaşılan bellek uygulamasını seçer. |
Veri türü | listeleme |
Default value | posix |
İzin verilen değerler | posix |
Parametre türü | salt okunur |
Belgeler | dynamic_shared_memory_type |
hash_mem_multiplier
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | Karma tablolar için kullanılacak work_mem katı. |
Veri türü | sayısal |
Default value | 2 |
İzin verilen değerler | 1-1000 |
Parametre türü | dynamic |
Belgeler | hash_mem_multiplier |
huge_pages
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | Büyük bellek sayfalarının kullanımını etkinleştirir/devre dışı bırakır. Bu ayar, 4'ten az sanal çekirdeği olan sunucular için geçerli değildir. |
Veri türü | listeleme |
Default value | try |
İzin verilen değerler | on,off,try |
Parametre türü | static |
Belgeler | huge_pages |
Açıklama
Büyük sayfalar, belleğin daha büyük bloklarda yönetilmesini sağlayan bir özelliktir. Standart 4 KB sayfa yerine genellikle 2 MB'a kadar blokları yönetebilirsiniz.
Çok büyük sayfaların kullanılması, CPU'ları etkili bir şekilde boşaltan performans avantajları sunabilir:
- Daha az çeviri lookaside buffer (TLB) hatası gibi bellek yönetimi görevleriyle ilişkili ek yükü azaltır.
- Bellek yönetimi için gereken süreyi kısaltır.
Özellikle, PostgreSQL'de büyük sayfaları yalnızca paylaşılan bellek alanı için kullanabilirsiniz. Paylaşılan bellek alanının önemli bir bölümü paylaşılan arabellekler için ayrılır.
Başka bir avantajı, büyük sayfaların paylaşılan bellek alanının diske değişimini engellemesi ve bu da performansı daha da dengeler.
Öneriler
- Önemli bellek kaynaklarına sahip sunucular için büyük sayfaları devre dışı bırakmaktan kaçının. Çok büyük sayfaları devre dışı bırakmak performansı tehlikeye atabilir.
- Çok büyük sayfaları desteklemeyen daha küçük bir sunucuyla başlıyorsanız ancak bunu destekleyen bir sunucuya ölçeği artırmayı düşünüyorsanız, sorunsuz geçiş ve en iyi performans için ayarını konumunda
TRY
tutunhuge_pages
.
Azure'a özgü notlar
Dört veya daha fazla sanal çekirdek içeren sunucular için, temel alınan işletim sisteminden büyük sayfalar otomatik olarak ayrılır. Bu özellik, dörtten az sanal çekirdeği olan sunucularda kullanılamaz. büyük sayfa sayısı, üzerinde yapılan değişiklikler shared_buffers
de dahil olmak üzere paylaşılan bellek ayarları değiştirilirse otomatik olarak ayarlanır.
huge_page_size
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | İstenmesi gereken büyük sayfa boyutu. |
Veri türü | integer |
Default value | 0 |
İzin verilen değerler | 0 |
Parametre türü | salt okunur |
Belgeler | huge_page_size |
logical_decoding_work_mem
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | Mantıksal kod çözme için kullanılacak en yüksek belleği ayarlar. |
Veri türü | integer |
Default value | 65536 |
İzin verilen değerler | 65536 |
Parametre türü | salt okunur |
Belgeler | logical_decoding_work_mem |
maintenance_work_mem
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | VACUUM, Create Index gibi bakım işlemleri için kullanılacak en yüksek belleği ayarlar. |
Veri türü | integer |
Default value | Sunucuya ayrılan kaynaklara (sanal çekirdekler, RAM veya disk alanı) bağlıdır. |
İzin verilen değerler | 1024-2097151 |
Parametre türü | dynamic |
Belgeler | maintenance_work_mem |
Açıklama
maintenance_work_mem
PostgreSQL'deki bir yapılandırma parametresidir. , CREATE INDEX
ve ALTER TABLE
gibi VACUUM
bakım işlemleri için ayrılan bellek miktarını yönetir. 'nin aksine work_mem
, sorgu işlemleri için bellek ayırmayı etkiler, maintenance_work_mem
veritabanı yapısını koruyan ve en iyi duruma getiren görevler için ayrılmıştır.
Önemli noktalar
- Vakum bellek üst sınırı: Ölü tanımlama demetlerinin temizlenmesini artırarak
maintenance_work_mem
hızlandırmak istiyorsanız, ölü tanımlama grubu tanımlayıcılarını toplamak için yerleşik bir sınırlama olduğunuVACUUM
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, öğesininmaintenance_work_mem
bir alt kümesi olarak görev yapar. Diğer bakım görevleri ve veri tanımı işlemleri için bellek ayırmayı etkilemeden otomatik vakum işlevinin ne kadar bellek kullandığına karar vekleyebilirsiniz.
Azure'a özgü notlar
Sunucu parametresinin maintenance_work_mem
varsayılan değeri, işlem için seçtiğiniz ürün adına göre esnek PostgreSQL için Azure Veritabanı sunucu örneğini sağladığınızda hesaplanır. Esnek sunucuyu destekleyen işlemde ürün seçiminde yapılan sonraki değişiklikler, o örneğin sunucu parametresi için maintenance_work_mem
varsayılan değer üzerinde herhangi bir etkiye sahip olmayacaktır.
Bir örneğe atanan ürünü her değiştirdiğinizde, parametrenin değerini maintenance_work_mem
aşağıdaki formüldeki değerlere göre de ayarlamanız gerekir.
değerini maintenance_work_mem
hesaplamak için kullanılan formül: (long)(82.5 * ln(memoryGiB) + 40) * 1024
.
Önceki formüle bağlı olarak, aşağıdaki tabloda sağlanan bellek miktarına bağlı olarak bu sunucu parametresinin ayarlanacağı değerler listelenmiştir:
Bellek boyutu | maintenance_work_mem |
---|---|
2 GiB | 99328 KiB |
4 GiB | 157696 KiB |
8 GiB | 216064 KiB |
16 GiB | 274432 KiB |
32 GiB | 332800 KiB |
48 GiB | 367616 KiB |
64 GiB | 392192 KiB |
80 GiB | 410624 KiB |
128 GiB | 450560 KiB |
160 GiB | 468992 KiB |
192 GiB | 484352 KiB |
256 GiB | 508928 KiB |
384 GiB | 542720 KiB |
432 GiB | 552960 KiB |
672 GiB | 590848 KiB |
max_prepared_transactions
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | Eşzamanlı olarak hazırlanmış en fazla işlem sayısını ayarlar. Çoğaltma sunucusunu çalıştırırken, bu parametreyi birincil sunucudakiyle aynı veya daha yüksek bir değere ayarlamanız gerekir. |
Veri türü | integer |
Default value | 0 |
İzin verilen değerler | 0-262143 |
Parametre türü | static |
Belgeler | max_prepared_transactions |
max_stack_depth
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | Maksimum yığın derinliğini kilobayt olarak ayarlar. |
Veri türü | integer |
Default value | 2048 |
İzin verilen değerler | 2048 |
Parametre türü | salt okunur |
Belgeler | max_stack_depth |
min_dynamic_shared_memory
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | Başlangıçta ayrılmış dinamik paylaşılan bellek miktarı. |
Veri türü | integer |
Default value | 0 |
İzin verilen değerler | 0 |
Parametre türü | salt okunur |
Belgeler | min_dynamic_shared_memory |
shared_buffers
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | Sunucu tarafından kullanılan paylaşılan bellek arabelleklerinin sayısını ayarlar. Birim 8 kb'dir. İzin verilen değerler kullanılabilir belleğin %10 - %75'i aralığındadır. |
Veri türü | integer |
Default value | Sunucuya ayrılan kaynaklara (sanal çekirdekler, RAM veya disk alanı) bağlıdır. |
İzin verilen değerler | 16-1073741823 |
Parametre türü | static |
Belgeler | shared_buffers |
Açıklama
Yapılandırma shared_buffers
parametresi, verileri arabelleğe almak için PostgreSQL veritabanına ayrılan sistem belleği miktarını belirler. Tüm veritabanı işlemleri tarafından erişilebilen merkezi bir bellek havuzu görevi görür.
Veri gerektiğinde, veritabanı işlemi önce paylaşılan arabelleği denetler. Gerekli veriler varsa, hızlı bir şekilde alınır ve daha fazla zaman alan bir disk okumasını atlar. Paylaşılan arabellekler, veritabanı işlemleriyle disk arasında bir aracı görevi görür ve gerekli G/Ç işlemlerinin sayısını etkili bir şekilde azaltır.
Azure'a özgü notlar
Sunucu parametresinin shared_buffers
varsayılan değeri, işlem için seçtiğiniz ürün adına göre esnek PostgreSQL için Azure Veritabanı sunucu örneğini sağladığınızda hesaplanır. Esnek sunucuyu destekleyen işlemde ürün seçiminde yapılan sonraki değişiklikler, bu örneğin sunucu parametresi için shared_buffers
varsayılan değer üzerinde herhangi bir etkiye sahip değildir.
Bir örneğe atanan ürünü her değiştirdiğinizde, parametrenin değerini shared_buffers
aşağıdaki formüllerdeki değerlere göre de ayarlamanız gerekir.
En fazla 2 GiB belleğe sahip sanal makineler için değerini shared_buffers
hesaplamak için kullanılan formül olur memoryGib * 16384
.
2 GiB'den fazla sanal makine için değerini shared_buffers
hesaplamak için kullanılan formül şeklindedir memoryGib * 32768
.
Önceki formüle bağlı olarak, aşağıdaki tabloda sağlanan bellek miktarına bağlı olarak bu sunucu parametresinin ayarlanacağı değerler listelenmiştir:
Bellek boyutu | shared_buffers |
---|---|
2 GiB | 32768 |
4 GiB | 131072 |
8 GiB | 262144 |
16 GiB | 524288 |
32 GiB | 1048576 |
48 GiB | 1572864 |
64 GiB | 2097152 |
80 GiB | 2621440 |
128 GiB | 4194304 |
160 GiB | 5242880 |
192 GiB | 6291456 |
256 GiB | 8388608 |
384 GiB | 12582912 |
432 GiB | 14155776 |
672 GiB | 22020096 |
shared_memory_type
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | Ana paylaşılan bellek bölgesi için kullanılan paylaşılan bellek uygulamasını seçer. |
Veri türü | listeleme |
Default value | mmap |
İzin verilen değerler | mmap |
Parametre türü | salt okunur |
Belgeler | shared_memory_type |
temp_buffers
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | Her veritabanı oturumu tarafından kullanılan en fazla geçici arabellek sayısını ayarlar. |
Veri türü | integer |
Default value | 1024 |
İzin verilen değerler | 100-1073741823 |
Parametre türü | dynamic |
Belgeler | temp_buffers |
vacuum_buffer_usage_limit
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | VACUUM, ANALYZE ve autovacuum için arabellek havuzu boyutunu ayarlar. |
Veri türü | integer |
Default value | 2048 |
İzin verilen değerler | 0-16777216 |
Parametre türü | dynamic |
Belgeler | vacuum_buffer_usage_limit |
work_mem
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | Geçici disk dosyalarına yazmadan önce iç sıralama işlemleri ve karma tabloları tarafından kullanılacak bellek miktarını ayarlar. |
Veri türü | integer |
Default value | 4096 |
İzin verilen değerler | 4096-2097151 |
Parametre türü | dynamic |
Belgeler | work_mem |
Açıklama
work_mem
PostgreSQL'deki parametresi, her veritabanı oturumunun özel bellek alanındaki belirli iç işlemler için ayrılan bellek miktarını denetler. Bu işlemlere örnek olarak sıralama ve karma oluşturma verilebilir.
Paylaşılan bellek alanında yer alan paylaşılan arabelleklerin aksine, work_mem
oturum başına veya sorgu başına özel bellek alanında ayrılır. Yeterli work_mem
bir boyut ayarlayarak bu işlemlerin verimliliğini önemli ölçüde artırabilir ve diske geçici veri yazma gereksinimini azaltabilirsiniz.
Önemli noktalar
- Özel bağlantı belleği:
work_mem
her veritabanı oturumunun kullandığı özel belleğin bir parçasıdır. Bu bellek, kullanılan paylaşılan bellek alanındanshared_buffers
farklıdır. - Sorguya özgü kullanım: Tüm oturumlar veya sorgular kullanmaz
work_mem
. gibiSELECT 1
basit sorguların gerektirmework_mem
olasılığı düşüktür. Ancak, sıralama veya karma oluşturma gibi işlemleri içeren karmaşık sorgularwork_mem
bir 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_mem
kullanabilir.
work_mem izleme ve ayarlama
Öncelikle sıralama veya karma işlemleriyle ilgili sorgu yürütme sürelerinin yavaş olması durumunda sisteminizin performansını sürekli izlemek ve gerektiği gibi ayarlamak work_mem
önemlidir. Azure portalında bulunan araçları kullanarak performansı izlemenin yolları şunlardır:
- Sorgu performansı içgörüleri: Geçici dosyalar oluşturan sorguları tanımlamak için Geçici dosyalara göre en çok kullanılan sorgular sekmesini denetleyin. Bu durum, öğesinin artırılmasına
work_mem
yönelik olası bir gereksinim olduğunu gösterir. - Sorun giderme kılavuzları: Sorunlu sorguları tanımlamak için sorun giderme kılavuzlarındaki Yüksek geçici dosyalar sekmesini kullanın.
Ayrıntılı ayarlama
Parametresini work_mem
yönetirken, genel bir değer ayarlamak yerine ayrıntılı ayarlama yaklaşımını benimsemek genellikle daha verimli olur. Bu yaklaşım, işlemlerin ve kullanıcıların belirli gereksinimlerine göre bellek ayırmanızı sağlar. Ayrıca yetersiz bellek sorunlarıyla karşılaşma riskini de en aza indirir. Bu konuda şu şekilde devam edebilirsiniz:
Kullanıcı düzeyi: Belirli bir kullanıcı öncelikle yoğun bellek kullanan toplama veya raporlama görevlerinde yer alıyorsa, söz konusu kullanıcının değerini özelleştirmeyi
work_mem
göz önünde bulundurun.ALTER ROLE
Kullanıcının işlemlerinin performansını artırmak için komutunu kullanın.İşlev/yordam düzeyi: Belirli işlevler veya yordamlar önemli miktarda geçici dosya oluşturuyorsa, belirli işlev veya yordam düzeyinde değeri artırmak
work_mem
yararlı olabilir. Bu işlemlereALTER FUNCTION
özel olarak daha fazla bellek ayırmak için veyaALTER 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, artanwork_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:
- psql veya tercih ettiğiniz PostgreSQL istemcisini kullanarak veritabanınıza bağlanın.
- 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'
. - Aynı oturumda sorunlu sorguda komutunu çalıştırın
EXPLAIN ANALYZE
. - için
"Sort Method: quicksort Memory: xkB"
çıktıyı gözden geçirin. değerini gösteriyorsa"external merge Disk: xkB"
, değeri artımlı olarak yükseltinwork_mem
ve görünene kadar"quicksort Memory"
yeniden test edin. Sorgunun"quicksort Memory"
artık bellekte çalıştığını belirten sinyallerin görünümü. - Bu yöntem aracılığıyla değeri belirledikten sonra, operasyonel gereksinimlerinize uyacak şekilde genel olarak veya daha ayrıntılı düzeylerde (daha önce açıklandığı gibi) uygulayabilirsiniz.
autovacuum_work_mem
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | Her otomatik vakum çalışan işlemi tarafından kullanılacak en yüksek belleği ayarlar. |
Veri türü | integer |
Default value | -1 |
İzin verilen değerler | -1-2097151 |
Parametre türü | dynamic |
Belgeler | autovacuum_work_mem |
dynamic_shared_memory_type
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | Kullanılan dinamik paylaşılan bellek uygulamasını seçer. |
Veri türü | listeleme |
Default value | posix |
İzin verilen değerler | posix |
Parametre türü | salt okunur |
Belgeler | dynamic_shared_memory_type |
hash_mem_multiplier
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | Karma tablolar için kullanılacak work_mem katı. |
Veri türü | sayısal |
Default value | 2 |
İzin verilen değerler | 1-1000 |
Parametre türü | dynamic |
Belgeler | hash_mem_multiplier |
huge_pages
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | Büyük bellek sayfalarının kullanımını etkinleştirir/devre dışı bırakır. Bu ayar, 4'ten az sanal çekirdeği olan sunucular için geçerli değildir. |
Veri türü | listeleme |
Default value | try |
İzin verilen değerler | on,off,try |
Parametre türü | static |
Belgeler | huge_pages |
Açıklama
Büyük sayfalar, belleğin daha büyük bloklarda yönetilmesini sağlayan bir özelliktir. Standart 4 KB sayfa yerine genellikle 2 MB'a kadar blokları yönetebilirsiniz.
Çok büyük sayfaların kullanılması, CPU'ları etkili bir şekilde boşaltan performans avantajları sunabilir:
- Daha az çeviri lookaside buffer (TLB) hatası gibi bellek yönetimi görevleriyle ilişkili ek yükü azaltır.
- Bellek yönetimi için gereken süreyi kısaltır.
Özellikle, PostgreSQL'de büyük sayfaları yalnızca paylaşılan bellek alanı için kullanabilirsiniz. Paylaşılan bellek alanının önemli bir bölümü paylaşılan arabellekler için ayrılır.
Başka bir avantajı, büyük sayfaların paylaşılan bellek alanının diske değişimini engellemesi ve bu da performansı daha da dengeler.
Öneriler
- Önemli bellek kaynaklarına sahip sunucular için büyük sayfaları devre dışı bırakmaktan kaçının. Çok büyük sayfaları devre dışı bırakmak performansı tehlikeye atabilir.
- Çok büyük sayfaları desteklemeyen daha küçük bir sunucuyla başlıyorsanız ancak bunu destekleyen bir sunucuya ölçeği artırmayı düşünüyorsanız, sorunsuz geçiş ve en iyi performans için ayarını konumunda
TRY
tutunhuge_pages
.
Azure'a özgü notlar
Dört veya daha fazla sanal çekirdek içeren sunucular için, temel alınan işletim sisteminden büyük sayfalar otomatik olarak ayrılır. Bu özellik, dörtten az sanal çekirdeği olan sunucularda kullanılamaz. büyük sayfa sayısı, üzerinde yapılan değişiklikler shared_buffers
de dahil olmak üzere paylaşılan bellek ayarları değiştirilirse otomatik olarak ayarlanır.
huge_page_size
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | İstenmesi gereken büyük sayfa boyutu. |
Veri türü | integer |
Default value | 0 |
İzin verilen değerler | 0 |
Parametre türü | salt okunur |
Belgeler | huge_page_size |
logical_decoding_work_mem
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | Mantıksal kod çözme için kullanılacak en yüksek belleği ayarlar. |
Veri türü | integer |
Default value | 65536 |
İzin verilen değerler | 64-2147483647 |
Parametre türü | dynamic |
Belgeler | logical_decoding_work_mem |
maintenance_work_mem
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | VACUUM, Create Index gibi bakım işlemleri için kullanılacak en yüksek belleği ayarlar. |
Veri türü | integer |
Default value | Sunucuya ayrılan kaynaklara (sanal çekirdekler, RAM veya disk alanı) bağlıdır. |
İzin verilen değerler | 1024-2097151 |
Parametre türü | dynamic |
Belgeler | maintenance_work_mem |
Açıklama
maintenance_work_mem
PostgreSQL'deki bir yapılandırma parametresidir. , CREATE INDEX
ve ALTER TABLE
gibi VACUUM
bakım işlemleri için ayrılan bellek miktarını yönetir. 'nin aksine work_mem
, sorgu işlemleri için bellek ayırmayı etkiler, maintenance_work_mem
veritabanı yapısını koruyan ve en iyi duruma getiren görevler için ayrılmıştır.
Önemli noktalar
- Vakum bellek üst sınırı: Ölü tanımlama demetlerinin temizlenmesini artırarak
maintenance_work_mem
hızlandırmak istiyorsanız, ölü tanımlama grubu tanımlayıcılarını toplamak için yerleşik bir sınırlama olduğunuVACUUM
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, öğesininmaintenance_work_mem
bir alt kümesi olarak görev yapar. Diğer bakım görevleri ve veri tanımı işlemleri için bellek ayırmayı etkilemeden otomatik vakum işlevinin ne kadar bellek kullandığına karar vekleyebilirsiniz.
Azure'a özgü notlar
Sunucu parametresinin maintenance_work_mem
varsayılan değeri, işlem için seçtiğiniz ürün adına göre esnek PostgreSQL için Azure Veritabanı sunucu örneğini sağladığınızda hesaplanır. Esnek sunucuyu destekleyen işlemde ürün seçiminde yapılan sonraki değişiklikler, o örneğin sunucu parametresi için maintenance_work_mem
varsayılan değer üzerinde herhangi bir etkiye sahip olmayacaktır.
Bir örneğe atanan ürünü her değiştirdiğinizde, parametrenin değerini maintenance_work_mem
aşağıdaki formüldeki değerlere göre de ayarlamanız gerekir.
değerini maintenance_work_mem
hesaplamak için kullanılan formül: (long)(82.5 * ln(memoryGiB) + 40) * 1024
.
Önceki formüle bağlı olarak, aşağıdaki tabloda sağlanan bellek miktarına bağlı olarak bu sunucu parametresinin ayarlanacağı değerler listelenmiştir:
Bellek boyutu | maintenance_work_mem |
---|---|
2 GiB | 99328 KiB |
4 GiB | 157696 KiB |
8 GiB | 216064 KiB |
16 GiB | 274432 KiB |
32 GiB | 332800 KiB |
48 GiB | 367616 KiB |
64 GiB | 392192 KiB |
80 GiB | 410624 KiB |
128 GiB | 450560 KiB |
160 GiB | 468992 KiB |
192 GiB | 484352 KiB |
256 GiB | 508928 KiB |
384 GiB | 542720 KiB |
432 GiB | 552960 KiB |
672 GiB | 590848 KiB |
max_prepared_transactions
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | Eşzamanlı olarak hazırlanmış en fazla işlem sayısını ayarlar. Çoğaltma sunucusunu çalıştırırken, bu parametreyi birincil sunucudakiyle aynı veya daha yüksek bir değere ayarlamanız gerekir. |
Veri türü | integer |
Default value | 0 |
İzin verilen değerler | 0-262143 |
Parametre türü | static |
Belgeler | max_prepared_transactions |
max_stack_depth
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | Maksimum yığın derinliğini kilobayt olarak ayarlar. |
Veri türü | integer |
Default value | 2048 |
İzin verilen değerler | 2048 |
Parametre türü | salt okunur |
Belgeler | max_stack_depth |
min_dynamic_shared_memory
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | Başlangıçta ayrılmış dinamik paylaşılan bellek miktarı. |
Veri türü | integer |
Default value | 0 |
İzin verilen değerler | 0 |
Parametre türü | salt okunur |
Belgeler | min_dynamic_shared_memory |
shared_buffers
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | Sunucu tarafından kullanılan paylaşılan bellek arabelleklerinin sayısını ayarlar. Birim 8 kb'dir. İzin verilen değerler kullanılabilir belleğin %10 - %75'i aralığındadır. |
Veri türü | integer |
Default value | Sunucuya ayrılan kaynaklara (sanal çekirdekler, RAM veya disk alanı) bağlıdır. |
İzin verilen değerler | 16-1073741823 |
Parametre türü | static |
Belgeler | shared_buffers |
Açıklama
Yapılandırma shared_buffers
parametresi, verileri arabelleğe almak için PostgreSQL veritabanına ayrılan sistem belleği miktarını belirler. Tüm veritabanı işlemleri tarafından erişilebilen merkezi bir bellek havuzu görevi görür.
Veri gerektiğinde, veritabanı işlemi önce paylaşılan arabelleği denetler. Gerekli veriler varsa, hızlı bir şekilde alınır ve daha fazla zaman alan bir disk okumasını atlar. Paylaşılan arabellekler, veritabanı işlemleriyle disk arasında bir aracı görevi görür ve gerekli G/Ç işlemlerinin sayısını etkili bir şekilde azaltır.
Azure'a özgü notlar
Sunucu parametresinin shared_buffers
varsayılan değeri, işlem için seçtiğiniz ürün adına göre esnek PostgreSQL için Azure Veritabanı sunucu örneğini sağladığınızda hesaplanır. Esnek sunucuyu destekleyen işlemde ürün seçiminde yapılan sonraki değişiklikler, bu örneğin sunucu parametresi için shared_buffers
varsayılan değer üzerinde herhangi bir etkiye sahip değildir.
Bir örneğe atanan ürünü her değiştirdiğinizde, parametrenin değerini shared_buffers
aşağıdaki formüllerdeki değerlere göre de ayarlamanız gerekir.
En fazla 2 GiB belleğe sahip sanal makineler için değerini shared_buffers
hesaplamak için kullanılan formül olur memoryGib * 16384
.
2 GiB'den fazla sanal makine için değerini shared_buffers
hesaplamak için kullanılan formül şeklindedir memoryGib * 32768
.
Önceki formüle bağlı olarak, aşağıdaki tabloda sağlanan bellek miktarına bağlı olarak bu sunucu parametresinin ayarlanacağı değerler listelenmiştir:
Bellek boyutu | shared_buffers |
---|---|
2 GiB | 32768 |
4 GiB | 131072 |
8 GiB | 262144 |
16 GiB | 524288 |
32 GiB | 1048576 |
48 GiB | 1572864 |
64 GiB | 2097152 |
80 GiB | 2621440 |
128 GiB | 4194304 |
160 GiB | 5242880 |
192 GiB | 6291456 |
256 GiB | 8388608 |
384 GiB | 12582912 |
432 GiB | 14155776 |
672 GiB | 22020096 |
shared_memory_type
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | Ana paylaşılan bellek bölgesi için kullanılan paylaşılan bellek uygulamasını seçer. |
Veri türü | listeleme |
Default value | mmap |
İzin verilen değerler | mmap |
Parametre türü | salt okunur |
Belgeler | shared_memory_type |
temp_buffers
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | Her veritabanı oturumu tarafından kullanılan en fazla geçici arabellek sayısını ayarlar. |
Veri türü | integer |
Default value | 1024 |
İzin verilen değerler | 100-1073741823 |
Parametre türü | dynamic |
Belgeler | temp_buffers |
vacuum_buffer_usage_limit
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | VACUUM, ANALYZE ve autovacuum için arabellek havuzu boyutunu ayarlar. |
Veri türü | integer |
Default value | 256 |
İzin verilen değerler | 0-16777216 |
Parametre türü | dynamic |
Belgeler | vacuum_buffer_usage_limit |
work_mem
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | Geçici disk dosyalarına yazmadan önce iç sıralama işlemleri ve karma tabloları tarafından kullanılacak bellek miktarını ayarlar. |
Veri türü | integer |
Default value | 4096 |
İzin verilen değerler | 4096-2097151 |
Parametre türü | dynamic |
Belgeler | work_mem |
Açıklama
work_mem
PostgreSQL'deki parametresi, her veritabanı oturumunun özel bellek alanındaki belirli iç işlemler için ayrılan bellek miktarını denetler. Bu işlemlere örnek olarak sıralama ve karma oluşturma verilebilir.
Paylaşılan bellek alanında yer alan paylaşılan arabelleklerin aksine, work_mem
oturum başına veya sorgu başına özel bellek alanında ayrılır. Yeterli work_mem
bir boyut ayarlayarak bu işlemlerin verimliliğini önemli ölçüde artırabilir ve diske geçici veri yazma gereksinimini azaltabilirsiniz.
Önemli noktalar
- Özel bağlantı belleği:
work_mem
her veritabanı oturumunun kullandığı özel belleğin bir parçasıdır. Bu bellek, kullanılan paylaşılan bellek alanındanshared_buffers
farklıdır. - Sorguya özgü kullanım: Tüm oturumlar veya sorgular kullanmaz
work_mem
. gibiSELECT 1
basit sorguların gerektirmework_mem
olasılığı düşüktür. Ancak, sıralama veya karma oluşturma gibi işlemleri içeren karmaşık sorgularwork_mem
bir 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_mem
kullanabilir.
work_mem izleme ve ayarlama
Öncelikle sıralama veya karma işlemleriyle ilgili sorgu yürütme sürelerinin yavaş olması durumunda sisteminizin performansını sürekli izlemek ve gerektiği gibi ayarlamak work_mem
önemlidir. Azure portalında bulunan araçları kullanarak performansı izlemenin yolları şunlardır:
- Sorgu performansı içgörüleri: Geçici dosyalar oluşturan sorguları tanımlamak için Geçici dosyalara göre en çok kullanılan sorgular sekmesini denetleyin. Bu durum, öğesinin artırılmasına
work_mem
yönelik olası bir gereksinim olduğunu gösterir. - Sorun giderme kılavuzları: Sorunlu sorguları tanımlamak için sorun giderme kılavuzlarındaki Yüksek geçici dosyalar sekmesini kullanın.
Ayrıntılı ayarlama
Parametresini work_mem
yönetirken, genel bir değer ayarlamak yerine ayrıntılı ayarlama yaklaşımını benimsemek genellikle daha verimli olur. Bu yaklaşım, işlemlerin ve kullanıcıların belirli gereksinimlerine göre bellek ayırmanızı sağlar. Ayrıca yetersiz bellek sorunlarıyla karşılaşma riskini de en aza indirir. Bu konuda şu şekilde devam edebilirsiniz:
Kullanıcı düzeyi: Belirli bir kullanıcı öncelikle yoğun bellek kullanan toplama veya raporlama görevlerinde yer alıyorsa, söz konusu kullanıcının değerini özelleştirmeyi
work_mem
göz önünde bulundurun.ALTER ROLE
Kullanıcının işlemlerinin performansını artırmak için komutunu kullanın.İşlev/yordam düzeyi: Belirli işlevler veya yordamlar önemli miktarda geçici dosya oluşturuyorsa, belirli işlev veya yordam düzeyinde değeri artırmak
work_mem
yararlı olabilir. Bu işlemlereALTER FUNCTION
özel olarak daha fazla bellek ayırmak için veyaALTER 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, artanwork_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:
- psql veya tercih ettiğiniz PostgreSQL istemcisini kullanarak veritabanınıza bağlanın.
- 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'
. - Aynı oturumda sorunlu sorguda komutunu çalıştırın
EXPLAIN ANALYZE
. - için
"Sort Method: quicksort Memory: xkB"
çıktıyı gözden geçirin. değerini gösteriyorsa"external merge Disk: xkB"
, değeri artımlı olarak yükseltinwork_mem
ve görünene kadar"quicksort Memory"
yeniden test edin. Sorgunun"quicksort Memory"
artık bellekte çalıştığını belirten sinyallerin görünümü. - Bu yöntem aracılığıyla değeri belirledikten sonra, operasyonel gereksinimlerinize uyacak şekilde genel olarak veya daha ayrıntılı düzeylerde (daha önce açıklandığı gibi) uygulayabilirsiniz.
autovacuum_work_mem
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | Her otomatik vakum çalışan işlemi tarafından kullanılacak en yüksek belleği ayarlar. |
Veri türü | integer |
Default value | -1 |
İzin verilen değerler | -1-2097151 |
Parametre türü | dynamic |
Belgeler | autovacuum_work_mem |
dynamic_shared_memory_type
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | Kullanılan dinamik paylaşılan bellek uygulamasını seçer. |
Veri türü | listeleme |
Default value | posix |
İzin verilen değerler | posix |
Parametre türü | salt okunur |
Belgeler | dynamic_shared_memory_type |
hash_mem_multiplier
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | Karma tablolar için kullanılacak work_mem katı. |
Veri türü | sayısal |
Default value | 2 |
İzin verilen değerler | 1-1000 |
Parametre türü | dynamic |
Belgeler | hash_mem_multiplier |
huge_pages
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | Büyük bellek sayfalarının kullanımını etkinleştirir/devre dışı bırakır. Bu ayar, 4'ten az sanal çekirdeği olan sunucular için geçerli değildir. |
Veri türü | listeleme |
Default value | try |
İzin verilen değerler | on,off,try |
Parametre türü | static |
Belgeler | huge_pages |
Açıklama
Büyük sayfalar, belleğin daha büyük bloklarda yönetilmesini sağlayan bir özelliktir. Standart 4 KB sayfa yerine genellikle 2 MB'a kadar blokları yönetebilirsiniz.
Çok büyük sayfaların kullanılması, CPU'ları etkili bir şekilde boşaltan performans avantajları sunabilir:
- Daha az çeviri lookaside buffer (TLB) hatası gibi bellek yönetimi görevleriyle ilişkili ek yükü azaltır.
- Bellek yönetimi için gereken süreyi kısaltır.
Özellikle, PostgreSQL'de büyük sayfaları yalnızca paylaşılan bellek alanı için kullanabilirsiniz. Paylaşılan bellek alanının önemli bir bölümü paylaşılan arabellekler için ayrılır.
Başka bir avantajı, büyük sayfaların paylaşılan bellek alanının diske değişimini engellemesi ve bu da performansı daha da dengeler.
Öneriler
- Önemli bellek kaynaklarına sahip sunucular için büyük sayfaları devre dışı bırakmaktan kaçının. Çok büyük sayfaları devre dışı bırakmak performansı tehlikeye atabilir.
- Çok büyük sayfaları desteklemeyen daha küçük bir sunucuyla başlıyorsanız ancak bunu destekleyen bir sunucuya ölçeği artırmayı düşünüyorsanız, sorunsuz geçiş ve en iyi performans için ayarını konumunda
TRY
tutunhuge_pages
.
Azure'a özgü notlar
Dört veya daha fazla sanal çekirdek içeren sunucular için, temel alınan işletim sisteminden büyük sayfalar otomatik olarak ayrılır. Bu özellik, dörtten az sanal çekirdeği olan sunucularda kullanılamaz. büyük sayfa sayısı, üzerinde yapılan değişiklikler shared_buffers
de dahil olmak üzere paylaşılan bellek ayarları değiştirilirse otomatik olarak ayarlanır.
huge_page_size
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | İstenmesi gereken büyük sayfa boyutu. |
Veri türü | integer |
Default value | 0 |
İzin verilen değerler | 0 |
Parametre türü | salt okunur |
Belgeler | huge_page_size |
logical_decoding_work_mem
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | Mantıksal kod çözme için kullanılacak en yüksek belleği ayarlar. |
Veri türü | integer |
Default value | 65536 |
İzin verilen değerler | 64-2147483647 |
Parametre türü | dynamic |
Belgeler | logical_decoding_work_mem |
maintenance_work_mem
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | VACUUM, Create Index gibi bakım işlemleri için kullanılacak en yüksek belleği ayarlar. |
Veri türü | integer |
Default value | Sunucuya ayrılan kaynaklara (sanal çekirdekler, RAM veya disk alanı) bağlıdır. |
İzin verilen değerler | 1024-2097151 |
Parametre türü | dynamic |
Belgeler | maintenance_work_mem |
Açıklama
maintenance_work_mem
PostgreSQL'deki bir yapılandırma parametresidir. , CREATE INDEX
ve ALTER TABLE
gibi VACUUM
bakım işlemleri için ayrılan bellek miktarını yönetir. 'nin aksine work_mem
, sorgu işlemleri için bellek ayırmayı etkiler, maintenance_work_mem
veritabanı yapısını koruyan ve en iyi duruma getiren görevler için ayrılmıştır.
Önemli noktalar
- Vakum bellek üst sınırı: Ölü tanımlama demetlerinin temizlenmesini artırarak
maintenance_work_mem
hızlandırmak istiyorsanız, ölü tanımlama grubu tanımlayıcılarını toplamak için yerleşik bir sınırlama olduğunuVACUUM
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, öğesininmaintenance_work_mem
bir alt kümesi olarak görev yapar. Diğer bakım görevleri ve veri tanımı işlemleri için bellek ayırmayı etkilemeden otomatik vakum işlevinin ne kadar bellek kullandığına karar vekleyebilirsiniz.
Azure'a özgü notlar
Sunucu parametresinin maintenance_work_mem
varsayılan değeri, işlem için seçtiğiniz ürün adına göre esnek PostgreSQL için Azure Veritabanı sunucu örneğini sağladığınızda hesaplanır. Esnek sunucuyu destekleyen işlemde ürün seçiminde yapılan sonraki değişiklikler, o örneğin sunucu parametresi için maintenance_work_mem
varsayılan değer üzerinde herhangi bir etkiye sahip olmayacaktır.
Bir örneğe atanan ürünü her değiştirdiğinizde, parametrenin değerini maintenance_work_mem
aşağıdaki formüldeki değerlere göre de ayarlamanız gerekir.
değerini maintenance_work_mem
hesaplamak için kullanılan formül: (long)(82.5 * ln(memoryGiB) + 40) * 1024
.
Önceki formüle bağlı olarak, aşağıdaki tabloda sağlanan bellek miktarına bağlı olarak bu sunucu parametresinin ayarlanacağı değerler listelenmiştir:
Bellek boyutu | maintenance_work_mem |
---|---|
2 GiB | 99328 KiB |
4 GiB | 157696 KiB |
8 GiB | 216064 KiB |
16 GiB | 274432 KiB |
32 GiB | 332800 KiB |
48 GiB | 367616 KiB |
64 GiB | 392192 KiB |
80 GiB | 410624 KiB |
128 GiB | 450560 KiB |
160 GiB | 468992 KiB |
192 GiB | 484352 KiB |
256 GiB | 508928 KiB |
384 GiB | 542720 KiB |
432 GiB | 552960 KiB |
672 GiB | 590848 KiB |
max_prepared_transactions
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | Eşzamanlı olarak hazırlanmış en fazla işlem sayısını ayarlar. Çoğaltma sunucusunu çalıştırırken, bu parametreyi birincil sunucudakiyle aynı veya daha yüksek bir değere ayarlamanız gerekir. |
Veri türü | integer |
Default value | 0 |
İzin verilen değerler | 0-262143 |
Parametre türü | static |
Belgeler | max_prepared_transactions |
max_stack_depth
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | Maksimum yığın derinliğini kilobayt olarak ayarlar. |
Veri türü | integer |
Default value | 2048 |
İzin verilen değerler | 2048 |
Parametre türü | salt okunur |
Belgeler | max_stack_depth |
min_dynamic_shared_memory
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | Başlangıçta ayrılmış dinamik paylaşılan bellek miktarı. |
Veri türü | integer |
Default value | 0 |
İzin verilen değerler | 0 |
Parametre türü | salt okunur |
Belgeler | min_dynamic_shared_memory |
shared_buffers
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | Sunucu tarafından kullanılan paylaşılan bellek arabelleklerinin sayısını ayarlar. Birim 8 kb'dir. İzin verilen değerler kullanılabilir belleğin %10 - %75'i aralığındadır. |
Veri türü | integer |
Default value | Sunucuya ayrılan kaynaklara (sanal çekirdekler, RAM veya disk alanı) bağlıdır. |
İzin verilen değerler | 16-1073741823 |
Parametre türü | static |
Belgeler | shared_buffers |
Açıklama
Yapılandırma shared_buffers
parametresi, verileri arabelleğe almak için PostgreSQL veritabanına ayrılan sistem belleği miktarını belirler. Tüm veritabanı işlemleri tarafından erişilebilen merkezi bir bellek havuzu görevi görür.
Veri gerektiğinde, veritabanı işlemi önce paylaşılan arabelleği denetler. Gerekli veriler varsa, hızlı bir şekilde alınır ve daha fazla zaman alan bir disk okumasını atlar. Paylaşılan arabellekler, veritabanı işlemleriyle disk arasında bir aracı görevi görür ve gerekli G/Ç işlemlerinin sayısını etkili bir şekilde azaltır.
Azure'a özgü notlar
Sunucu parametresinin shared_buffers
varsayılan değeri, işlem için seçtiğiniz ürün adına göre esnek PostgreSQL için Azure Veritabanı sunucu örneğini sağladığınızda hesaplanır. Esnek sunucuyu destekleyen işlemde ürün seçiminde yapılan sonraki değişiklikler, bu örneğin sunucu parametresi için shared_buffers
varsayılan değer üzerinde herhangi bir etkiye sahip değildir.
Bir örneğe atanan ürünü her değiştirdiğinizde, parametrenin değerini shared_buffers
aşağıdaki formüllerdeki değerlere göre de ayarlamanız gerekir.
En fazla 2 GiB belleğe sahip sanal makineler için değerini shared_buffers
hesaplamak için kullanılan formül olur memoryGib * 16384
.
2 GiB'den fazla sanal makine için değerini shared_buffers
hesaplamak için kullanılan formül şeklindedir memoryGib * 32768
.
Önceki formüle bağlı olarak, aşağıdaki tabloda sağlanan bellek miktarına bağlı olarak bu sunucu parametresinin ayarlanacağı değerler listelenmiştir:
Bellek boyutu | shared_buffers |
---|---|
2 GiB | 32768 |
4 GiB | 131072 |
8 GiB | 262144 |
16 GiB | 524288 |
32 GiB | 1048576 |
48 GiB | 1572864 |
64 GiB | 2097152 |
80 GiB | 2621440 |
128 GiB | 4194304 |
160 GiB | 5242880 |
192 GiB | 6291456 |
256 GiB | 8388608 |
384 GiB | 12582912 |
432 GiB | 14155776 |
672 GiB | 22020096 |
shared_memory_type
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | Ana paylaşılan bellek bölgesi için kullanılan paylaşılan bellek uygulamasını seçer. |
Veri türü | listeleme |
Default value | mmap |
İzin verilen değerler | mmap |
Parametre türü | salt okunur |
Belgeler | shared_memory_type |
temp_buffers
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | Her veritabanı oturumu tarafından kullanılan en fazla geçici arabellek sayısını ayarlar. |
Veri türü | integer |
Default value | 1024 |
İzin verilen değerler | 100-1073741823 |
Parametre türü | dynamic |
Belgeler | temp_buffers |
work_mem
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | Geçici disk dosyalarına yazmadan önce iç sıralama işlemleri ve karma tabloları tarafından kullanılacak bellek miktarını ayarlar. |
Veri türü | integer |
Default value | 4096 |
İzin verilen değerler | 4096-2097151 |
Parametre türü | dynamic |
Belgeler | work_mem |
Açıklama
work_mem
PostgreSQL'deki parametresi, her veritabanı oturumunun özel bellek alanındaki belirli iç işlemler için ayrılan bellek miktarını denetler. Bu işlemlere örnek olarak sıralama ve karma oluşturma verilebilir.
Paylaşılan bellek alanında yer alan paylaşılan arabelleklerin aksine, work_mem
oturum başına veya sorgu başına özel bellek alanında ayrılır. Yeterli work_mem
bir boyut ayarlayarak bu işlemlerin verimliliğini önemli ölçüde artırabilir ve diske geçici veri yazma gereksinimini azaltabilirsiniz.
Önemli noktalar
- Özel bağlantı belleği:
work_mem
her veritabanı oturumunun kullandığı özel belleğin bir parçasıdır. Bu bellek, kullanılan paylaşılan bellek alanındanshared_buffers
farklıdır. - Sorguya özgü kullanım: Tüm oturumlar veya sorgular kullanmaz
work_mem
. gibiSELECT 1
basit sorguların gerektirmework_mem
olasılığı düşüktür. Ancak, sıralama veya karma oluşturma gibi işlemleri içeren karmaşık sorgularwork_mem
bir 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_mem
kullanabilir.
work_mem izleme ve ayarlama
Öncelikle sıralama veya karma işlemleriyle ilgili sorgu yürütme sürelerinin yavaş olması durumunda sisteminizin performansını sürekli izlemek ve gerektiği gibi ayarlamak work_mem
önemlidir. Azure portalında bulunan araçları kullanarak performansı izlemenin yolları şunlardır:
- Sorgu performansı içgörüleri: Geçici dosyalar oluşturan sorguları tanımlamak için Geçici dosyalara göre en çok kullanılan sorgular sekmesini denetleyin. Bu durum, öğesinin artırılmasına
work_mem
yönelik olası bir gereksinim olduğunu gösterir. - Sorun giderme kılavuzları: Sorunlu sorguları tanımlamak için sorun giderme kılavuzlarındaki Yüksek geçici dosyalar sekmesini kullanın.
Ayrıntılı ayarlama
Parametresini work_mem
yönetirken, genel bir değer ayarlamak yerine ayrıntılı ayarlama yaklaşımını benimsemek genellikle daha verimli olur. Bu yaklaşım, işlemlerin ve kullanıcıların belirli gereksinimlerine göre bellek ayırmanızı sağlar. Ayrıca yetersiz bellek sorunlarıyla karşılaşma riskini de en aza indirir. Bu konuda şu şekilde devam edebilirsiniz:
Kullanıcı düzeyi: Belirli bir kullanıcı öncelikle yoğun bellek kullanan toplama veya raporlama görevlerinde yer alıyorsa, söz konusu kullanıcının değerini özelleştirmeyi
work_mem
göz önünde bulundurun.ALTER ROLE
Kullanıcının işlemlerinin performansını artırmak için komutunu kullanın.İşlev/yordam düzeyi: Belirli işlevler veya yordamlar önemli miktarda geçici dosya oluşturuyorsa, belirli işlev veya yordam düzeyinde değeri artırmak
work_mem
yararlı olabilir. Bu işlemlereALTER FUNCTION
özel olarak daha fazla bellek ayırmak için veyaALTER 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, artanwork_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:
- psql veya tercih ettiğiniz PostgreSQL istemcisini kullanarak veritabanınıza bağlanın.
- 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'
. - Aynı oturumda sorunlu sorguda komutunu çalıştırın
EXPLAIN ANALYZE
. - için
"Sort Method: quicksort Memory: xkB"
çıktıyı gözden geçirin. değerini gösteriyorsa"external merge Disk: xkB"
, değeri artımlı olarak yükseltinwork_mem
ve görünene kadar"quicksort Memory"
yeniden test edin. Sorgunun"quicksort Memory"
artık bellekte çalıştığını belirten sinyallerin görünümü. - Bu yöntem aracılığıyla değeri belirledikten sonra, operasyonel gereksinimlerinize uyacak şekilde genel olarak veya daha ayrıntılı düzeylerde (daha önce açıklandığı gibi) uygulayabilirsiniz.
autovacuum_work_mem
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | Her otomatik vakum çalışan işlemi tarafından kullanılacak en yüksek belleği ayarlar. |
Veri türü | integer |
Default value | -1 |
İzin verilen değerler | -1-2097151 |
Parametre türü | dynamic |
Belgeler | autovacuum_work_mem |
dynamic_shared_memory_type
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | Kullanılan dinamik paylaşılan bellek uygulamasını seçer. |
Veri türü | listeleme |
Default value | posix |
İzin verilen değerler | posix |
Parametre türü | salt okunur |
Belgeler | dynamic_shared_memory_type |
hash_mem_multiplier
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | Karma tablolar için kullanılacak work_mem katı. |
Veri türü | sayısal |
Default value | 1 |
İzin verilen değerler | 1-1000 |
Parametre türü | dynamic |
Belgeler | hash_mem_multiplier |
huge_pages
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | Büyük bellek sayfalarının kullanımını etkinleştirir/devre dışı bırakır. Bu ayar, 4'ten az sanal çekirdeği olan sunucular için geçerli değildir. |
Veri türü | listeleme |
Default value | try |
İzin verilen değerler | on,off,try |
Parametre türü | static |
Belgeler | huge_pages |
Açıklama
Büyük sayfalar, belleğin daha büyük bloklarda yönetilmesini sağlayan bir özelliktir. Standart 4 KB sayfa yerine genellikle 2 MB'a kadar blokları yönetebilirsiniz.
Çok büyük sayfaların kullanılması, CPU'ları etkili bir şekilde boşaltan performans avantajları sunabilir:
- Daha az çeviri lookaside buffer (TLB) hatası gibi bellek yönetimi görevleriyle ilişkili ek yükü azaltır.
- Bellek yönetimi için gereken süreyi kısaltır.
Özellikle, PostgreSQL'de büyük sayfaları yalnızca paylaşılan bellek alanı için kullanabilirsiniz. Paylaşılan bellek alanının önemli bir bölümü paylaşılan arabellekler için ayrılır.
Başka bir avantajı, büyük sayfaların paylaşılan bellek alanının diske değişimini engellemesi ve bu da performansı daha da dengeler.
Öneriler
- Önemli bellek kaynaklarına sahip sunucular için büyük sayfaları devre dışı bırakmaktan kaçının. Çok büyük sayfaları devre dışı bırakmak performansı tehlikeye atabilir.
- Çok büyük sayfaları desteklemeyen daha küçük bir sunucuyla başlıyorsanız ancak bunu destekleyen bir sunucuya ölçeği artırmayı düşünüyorsanız, sorunsuz geçiş ve en iyi performans için ayarını konumunda
TRY
tutunhuge_pages
.
Azure'a özgü notlar
Dört veya daha fazla sanal çekirdek içeren sunucular için, temel alınan işletim sisteminden büyük sayfalar otomatik olarak ayrılır. Bu özellik, dörtten az sanal çekirdeği olan sunucularda kullanılamaz. büyük sayfa sayısı, üzerinde yapılan değişiklikler shared_buffers
de dahil olmak üzere paylaşılan bellek ayarları değiştirilirse otomatik olarak ayarlanır.
huge_page_size
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | İstenmesi gereken büyük sayfa boyutu. |
Veri türü | integer |
Default value | 0 |
İzin verilen değerler | 0 |
Parametre türü | salt okunur |
Belgeler | huge_page_size |
logical_decoding_work_mem
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | Mantıksal kod çözme için kullanılacak en yüksek belleği ayarlar. |
Veri türü | integer |
Default value | 65536 |
İzin verilen değerler | 64-2147483647 |
Parametre türü | dynamic |
Belgeler | logical_decoding_work_mem |
maintenance_work_mem
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | VACUUM, Create Index gibi bakım işlemleri için kullanılacak en yüksek belleği ayarlar. |
Veri türü | integer |
Default value | Sunucuya ayrılan kaynaklara (sanal çekirdekler, RAM veya disk alanı) bağlıdır. |
İzin verilen değerler | 1024-2097151 |
Parametre türü | dynamic |
Belgeler | maintenance_work_mem |
Açıklama
maintenance_work_mem
PostgreSQL'deki bir yapılandırma parametresidir. , CREATE INDEX
ve ALTER TABLE
gibi VACUUM
bakım işlemleri için ayrılan bellek miktarını yönetir. 'nin aksine work_mem
, sorgu işlemleri için bellek ayırmayı etkiler, maintenance_work_mem
veritabanı yapısını koruyan ve en iyi duruma getiren görevler için ayrılmıştır.
Önemli noktalar
- Vakum bellek üst sınırı: Ölü tanımlama demetlerinin temizlenmesini artırarak
maintenance_work_mem
hızlandırmak istiyorsanız, ölü tanımlama grubu tanımlayıcılarını toplamak için yerleşik bir sınırlama olduğunuVACUUM
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, öğesininmaintenance_work_mem
bir alt kümesi olarak görev yapar. Diğer bakım görevleri ve veri tanımı işlemleri için bellek ayırmayı etkilemeden otomatik vakum işlevinin ne kadar bellek kullandığına karar vekleyebilirsiniz.
Azure'a özgü notlar
Sunucu parametresinin maintenance_work_mem
varsayılan değeri, işlem için seçtiğiniz ürün adına göre esnek PostgreSQL için Azure Veritabanı sunucu örneğini sağladığınızda hesaplanır. Esnek sunucuyu destekleyen işlemde ürün seçiminde yapılan sonraki değişiklikler, o örneğin sunucu parametresi için maintenance_work_mem
varsayılan değer üzerinde herhangi bir etkiye sahip olmayacaktır.
Bir örneğe atanan ürünü her değiştirdiğinizde, parametrenin değerini maintenance_work_mem
aşağıdaki formüldeki değerlere göre de ayarlamanız gerekir.
değerini maintenance_work_mem
hesaplamak için kullanılan formül: (long)(82.5 * ln(memoryGiB) + 40) * 1024
.
Önceki formüle bağlı olarak, aşağıdaki tabloda sağlanan bellek miktarına bağlı olarak bu sunucu parametresinin ayarlanacağı değerler listelenmiştir:
Bellek boyutu | maintenance_work_mem |
---|---|
2 GiB | 99328 KiB |
4 GiB | 157696 KiB |
8 GiB | 216064 KiB |
16 GiB | 274432 KiB |
32 GiB | 332800 KiB |
48 GiB | 367616 KiB |
64 GiB | 392192 KiB |
80 GiB | 410624 KiB |
128 GiB | 450560 KiB |
160 GiB | 468992 KiB |
192 GiB | 484352 KiB |
256 GiB | 508928 KiB |
384 GiB | 542720 KiB |
432 GiB | 552960 KiB |
672 GiB | 590848 KiB |
max_prepared_transactions
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | Eşzamanlı olarak hazırlanmış en fazla işlem sayısını ayarlar. Çoğaltma sunucusunu çalıştırırken, bu parametreyi birincil sunucudakiyle aynı veya daha yüksek bir değere ayarlamanız gerekir. |
Veri türü | integer |
Default value | 0 |
İzin verilen değerler | 0-262143 |
Parametre türü | static |
Belgeler | max_prepared_transactions |
max_stack_depth
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | Maksimum yığın derinliğini kilobayt olarak ayarlar. |
Veri türü | integer |
Default value | 2048 |
İzin verilen değerler | 2048 |
Parametre türü | salt okunur |
Belgeler | max_stack_depth |
min_dynamic_shared_memory
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | Başlangıçta ayrılmış dinamik paylaşılan bellek miktarı. |
Veri türü | integer |
Default value | 0 |
İzin verilen değerler | 0 |
Parametre türü | salt okunur |
Belgeler | min_dynamic_shared_memory |
shared_buffers
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | Sunucu tarafından kullanılan paylaşılan bellek arabelleklerinin sayısını ayarlar. Birim 8 kb'dir. İzin verilen değerler kullanılabilir belleğin %10 - %75'i aralığındadır. |
Veri türü | integer |
Default value | Sunucuya ayrılan kaynaklara (sanal çekirdekler, RAM veya disk alanı) bağlıdır. |
İzin verilen değerler | 16-1073741823 |
Parametre türü | static |
Belgeler | shared_buffers |
Açıklama
Yapılandırma shared_buffers
parametresi, verileri arabelleğe almak için PostgreSQL veritabanına ayrılan sistem belleği miktarını belirler. Tüm veritabanı işlemleri tarafından erişilebilen merkezi bir bellek havuzu görevi görür.
Veri gerektiğinde, veritabanı işlemi önce paylaşılan arabelleği denetler. Gerekli veriler varsa, hızlı bir şekilde alınır ve daha fazla zaman alan bir disk okumasını atlar. Paylaşılan arabellekler, veritabanı işlemleriyle disk arasında bir aracı görevi görür ve gerekli G/Ç işlemlerinin sayısını etkili bir şekilde azaltır.
Azure'a özgü notlar
Sunucu parametresinin shared_buffers
varsayılan değeri, işlem için seçtiğiniz ürün adına göre esnek PostgreSQL için Azure Veritabanı sunucu örneğini sağladığınızda hesaplanır. Esnek sunucuyu destekleyen işlemde ürün seçiminde yapılan sonraki değişiklikler, bu örneğin sunucu parametresi için shared_buffers
varsayılan değer üzerinde herhangi bir etkiye sahip değildir.
Bir örneğe atanan ürünü her değiştirdiğinizde, parametrenin değerini shared_buffers
aşağıdaki formüllerdeki değerlere göre de ayarlamanız gerekir.
En fazla 2 GiB belleğe sahip sanal makineler için değerini shared_buffers
hesaplamak için kullanılan formül olur memoryGib * 16384
.
2 GiB'den fazla sanal makine için değerini shared_buffers
hesaplamak için kullanılan formül şeklindedir memoryGib * 32768
.
Önceki formüle bağlı olarak, aşağıdaki tabloda sağlanan bellek miktarına bağlı olarak bu sunucu parametresinin ayarlanacağı değerler listelenmiştir:
Bellek boyutu | shared_buffers |
---|---|
2 GiB | 32768 |
4 GiB | 131072 |
8 GiB | 262144 |
16 GiB | 524288 |
32 GiB | 1048576 |
48 GiB | 1572864 |
64 GiB | 2097152 |
80 GiB | 2621440 |
128 GiB | 4194304 |
160 GiB | 5242880 |
192 GiB | 6291456 |
256 GiB | 8388608 |
384 GiB | 12582912 |
432 GiB | 14155776 |
672 GiB | 22020096 |
shared_memory_type
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | Ana paylaşılan bellek bölgesi için kullanılan paylaşılan bellek uygulamasını seçer. |
Veri türü | listeleme |
Default value | mmap |
İzin verilen değerler | mmap |
Parametre türü | salt okunur |
Belgeler | shared_memory_type |
temp_buffers
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | Her veritabanı oturumu tarafından kullanılan en fazla geçici arabellek sayısını ayarlar. |
Veri türü | integer |
Default value | 1024 |
İzin verilen değerler | 100-1073741823 |
Parametre türü | dynamic |
Belgeler | temp_buffers |
work_mem
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | Geçici disk dosyalarına yazmadan önce iç sıralama işlemleri ve karma tabloları tarafından kullanılacak bellek miktarını ayarlar. |
Veri türü | integer |
Default value | 4096 |
İzin verilen değerler | 4096-2097151 |
Parametre türü | dynamic |
Belgeler | work_mem |
Açıklama
work_mem
PostgreSQL'deki parametresi, her veritabanı oturumunun özel bellek alanındaki belirli iç işlemler için ayrılan bellek miktarını denetler. Bu işlemlere örnek olarak sıralama ve karma oluşturma verilebilir.
Paylaşılan bellek alanında yer alan paylaşılan arabelleklerin aksine, work_mem
oturum başına veya sorgu başına özel bellek alanında ayrılır. Yeterli work_mem
bir boyut ayarlayarak bu işlemlerin verimliliğini önemli ölçüde artırabilir ve diske geçici veri yazma gereksinimini azaltabilirsiniz.
Önemli noktalar
- Özel bağlantı belleği:
work_mem
her veritabanı oturumunun kullandığı özel belleğin bir parçasıdır. Bu bellek, kullanılan paylaşılan bellek alanındanshared_buffers
farklıdır. - Sorguya özgü kullanım: Tüm oturumlar veya sorgular kullanmaz
work_mem
. gibiSELECT 1
basit sorguların gerektirmework_mem
olasılığı düşüktür. Ancak, sıralama veya karma oluşturma gibi işlemleri içeren karmaşık sorgularwork_mem
bir 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_mem
kullanabilir.
work_mem izleme ve ayarlama
Öncelikle sıralama veya karma işlemleriyle ilgili sorgu yürütme sürelerinin yavaş olması durumunda sisteminizin performansını sürekli izlemek ve gerektiği gibi ayarlamak work_mem
önemlidir. Azure portalında bulunan araçları kullanarak performansı izlemenin yolları şunlardır:
- Sorgu performansı içgörüleri: Geçici dosyalar oluşturan sorguları tanımlamak için Geçici dosyalara göre en çok kullanılan sorgular sekmesini denetleyin. Bu durum, öğesinin artırılmasına
work_mem
yönelik olası bir gereksinim olduğunu gösterir. - Sorun giderme kılavuzları: Sorunlu sorguları tanımlamak için sorun giderme kılavuzlarındaki Yüksek geçici dosyalar sekmesini kullanın.
Ayrıntılı ayarlama
Parametresini work_mem
yönetirken, genel bir değer ayarlamak yerine ayrıntılı ayarlama yaklaşımını benimsemek genellikle daha verimli olur. Bu yaklaşım, işlemlerin ve kullanıcıların belirli gereksinimlerine göre bellek ayırmanızı sağlar. Ayrıca yetersiz bellek sorunlarıyla karşılaşma riskini de en aza indirir. Bu konuda şu şekilde devam edebilirsiniz:
Kullanıcı düzeyi: Belirli bir kullanıcı öncelikle yoğun bellek kullanan toplama veya raporlama görevlerinde yer alıyorsa, söz konusu kullanıcının değerini özelleştirmeyi
work_mem
göz önünde bulundurun.ALTER ROLE
Kullanıcının işlemlerinin performansını artırmak için komutunu kullanın.İşlev/yordam düzeyi: Belirli işlevler veya yordamlar önemli miktarda geçici dosya oluşturuyorsa, belirli işlev veya yordam düzeyinde değeri artırmak
work_mem
yararlı olabilir. Bu işlemlereALTER FUNCTION
özel olarak daha fazla bellek ayırmak için veyaALTER 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, artanwork_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:
- psql veya tercih ettiğiniz PostgreSQL istemcisini kullanarak veritabanınıza bağlanın.
- 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'
. - Aynı oturumda sorunlu sorguda komutunu çalıştırın
EXPLAIN ANALYZE
. - için
"Sort Method: quicksort Memory: xkB"
çıktıyı gözden geçirin. değerini gösteriyorsa"external merge Disk: xkB"
, değeri artımlı olarak yükseltinwork_mem
ve görünene kadar"quicksort Memory"
yeniden test edin. Sorgunun"quicksort Memory"
artık bellekte çalıştığını belirten sinyallerin görünümü. - Bu yöntem aracılığıyla değeri belirledikten sonra, operasyonel gereksinimlerinize uyacak şekilde genel olarak veya daha ayrıntılı düzeylerde (daha önce açıklandığı gibi) uygulayabilirsiniz.
autovacuum_work_mem
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | Her otomatik vakum çalışan işlemi tarafından kullanılacak en yüksek belleği ayarlar. |
Veri türü | integer |
Default value | -1 |
İzin verilen değerler | -1-2097151 |
Parametre türü | dynamic |
Belgeler | autovacuum_work_mem |
dynamic_shared_memory_type
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | Kullanılan dinamik paylaşılan bellek uygulamasını seçer. |
Veri türü | listeleme |
Default value | posix |
İzin verilen değerler | posix |
Parametre türü | salt okunur |
Belgeler | dynamic_shared_memory_type |
hash_mem_multiplier
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | Karma tablolar için kullanılacak work_mem katı. |
Veri türü | sayısal |
Default value | 1 |
İzin verilen değerler | 1-1000 |
Parametre türü | dynamic |
Belgeler | hash_mem_multiplier |
huge_pages
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | Büyük bellek sayfalarının kullanımını etkinleştirir/devre dışı bırakır. Bu ayar, 4'ten az sanal çekirdeği olan sunucular için geçerli değildir. |
Veri türü | listeleme |
Default value | try |
İzin verilen değerler | on,off,try |
Parametre türü | static |
Belgeler | huge_pages |
Açıklama
Büyük sayfalar, belleğin daha büyük bloklarda yönetilmesini sağlayan bir özelliktir. Standart 4 KB sayfa yerine genellikle 2 MB'a kadar blokları yönetebilirsiniz.
Çok büyük sayfaların kullanılması, CPU'ları etkili bir şekilde boşaltan performans avantajları sunabilir:
- Daha az çeviri lookaside buffer (TLB) hatası gibi bellek yönetimi görevleriyle ilişkili ek yükü azaltır.
- Bellek yönetimi için gereken süreyi kısaltır.
Özellikle, PostgreSQL'de büyük sayfaları yalnızca paylaşılan bellek alanı için kullanabilirsiniz. Paylaşılan bellek alanının önemli bir bölümü paylaşılan arabellekler için ayrılır.
Başka bir avantajı, büyük sayfaların paylaşılan bellek alanının diske değişimini engellemesi ve bu da performansı daha da dengeler.
Öneriler
- Önemli bellek kaynaklarına sahip sunucular için büyük sayfaları devre dışı bırakmaktan kaçının. Çok büyük sayfaları devre dışı bırakmak performansı tehlikeye atabilir.
- Çok büyük sayfaları desteklemeyen daha küçük bir sunucuyla başlıyorsanız ancak bunu destekleyen bir sunucuya ölçeği artırmayı düşünüyorsanız, sorunsuz geçiş ve en iyi performans için ayarını konumunda
TRY
tutunhuge_pages
.
Azure'a özgü notlar
Dört veya daha fazla sanal çekirdek içeren sunucular için, temel alınan işletim sisteminden büyük sayfalar otomatik olarak ayrılır. Bu özellik, dörtten az sanal çekirdeği olan sunucularda kullanılamaz. büyük sayfa sayısı, üzerinde yapılan değişiklikler shared_buffers
de dahil olmak üzere paylaşılan bellek ayarları değiştirilirse otomatik olarak ayarlanır.
logical_decoding_work_mem
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | Mantıksal kod çözme için kullanılacak en yüksek belleği ayarlar. |
Veri türü | integer |
Default value | 65536 |
İzin verilen değerler | 64-2147483647 |
Parametre türü | dynamic |
Belgeler | logical_decoding_work_mem |
maintenance_work_mem
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | VACUUM, Create Index gibi bakım işlemleri için kullanılacak en yüksek belleği ayarlar. |
Veri türü | integer |
Default value | Sunucuya ayrılan kaynaklara (sanal çekirdekler, RAM veya disk alanı) bağlıdır. |
İzin verilen değerler | 1024-2097151 |
Parametre türü | dynamic |
Belgeler | maintenance_work_mem |
Açıklama
maintenance_work_mem
PostgreSQL'deki bir yapılandırma parametresidir. , CREATE INDEX
ve ALTER TABLE
gibi VACUUM
bakım işlemleri için ayrılan bellek miktarını yönetir. 'nin aksine work_mem
, sorgu işlemleri için bellek ayırmayı etkiler, maintenance_work_mem
veritabanı yapısını koruyan ve en iyi duruma getiren görevler için ayrılmıştır.
Önemli noktalar
- Vakum bellek üst sınırı: Ölü tanımlama demetlerinin temizlenmesini artırarak
maintenance_work_mem
hızlandırmak istiyorsanız, ölü tanımlama grubu tanımlayıcılarını toplamak için yerleşik bir sınırlama olduğunuVACUUM
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, öğesininmaintenance_work_mem
bir alt kümesi olarak görev yapar. Diğer bakım görevleri ve veri tanımı işlemleri için bellek ayırmayı etkilemeden otomatik vakum işlevinin ne kadar bellek kullandığına karar vekleyebilirsiniz.
Azure'a özgü notlar
Sunucu parametresinin maintenance_work_mem
varsayılan değeri, işlem için seçtiğiniz ürün adına göre esnek PostgreSQL için Azure Veritabanı sunucu örneğini sağladığınızda hesaplanır. Esnek sunucuyu destekleyen işlemde ürün seçiminde yapılan sonraki değişiklikler, o örneğin sunucu parametresi için maintenance_work_mem
varsayılan değer üzerinde herhangi bir etkiye sahip olmayacaktır.
Bir örneğe atanan ürünü her değiştirdiğinizde, parametrenin değerini maintenance_work_mem
aşağıdaki formüldeki değerlere göre de ayarlamanız gerekir.
değerini maintenance_work_mem
hesaplamak için kullanılan formül: (long)(82.5 * ln(memoryGiB) + 40) * 1024
.
Önceki formüle bağlı olarak, aşağıdaki tabloda sağlanan bellek miktarına bağlı olarak bu sunucu parametresinin ayarlanacağı değerler listelenmiştir:
Bellek boyutu | maintenance_work_mem |
---|---|
2 GiB | 99328 KiB |
4 GiB | 157696 KiB |
8 GiB | 216064 KiB |
16 GiB | 274432 KiB |
32 GiB | 332800 KiB |
48 GiB | 367616 KiB |
64 GiB | 392192 KiB |
80 GiB | 410624 KiB |
128 GiB | 450560 KiB |
160 GiB | 468992 KiB |
192 GiB | 484352 KiB |
256 GiB | 508928 KiB |
384 GiB | 542720 KiB |
432 GiB | 552960 KiB |
672 GiB | 590848 KiB |
max_prepared_transactions
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | Eşzamanlı olarak hazırlanmış en fazla işlem sayısını ayarlar. Çoğaltma sunucusunu çalıştırırken, bu parametreyi birincil sunucudakiyle aynı veya daha yüksek bir değere ayarlamanız gerekir. |
Veri türü | integer |
Default value | 0 |
İzin verilen değerler | 0-262143 |
Parametre türü | static |
Belgeler | max_prepared_transactions |
max_stack_depth
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | Maksimum yığın derinliğini kilobayt olarak ayarlar. |
Veri türü | integer |
Default value | 2048 |
İzin verilen değerler | 2048 |
Parametre türü | salt okunur |
Belgeler | max_stack_depth |
shared_buffers
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | Sunucu tarafından kullanılan paylaşılan bellek arabelleklerinin sayısını ayarlar. Birim 8 kb'dir. İzin verilen değerler kullanılabilir belleğin %10 - %75'i aralığındadır. |
Veri türü | integer |
Default value | Sunucuya ayrılan kaynaklara (sanal çekirdekler, RAM veya disk alanı) bağlıdır. |
İzin verilen değerler | 16-1073741823 |
Parametre türü | static |
Belgeler | shared_buffers |
Açıklama
Yapılandırma shared_buffers
parametresi, verileri arabelleğe almak için PostgreSQL veritabanına ayrılan sistem belleği miktarını belirler. Tüm veritabanı işlemleri tarafından erişilebilen merkezi bir bellek havuzu görevi görür.
Veri gerektiğinde, veritabanı işlemi önce paylaşılan arabelleği denetler. Gerekli veriler varsa, hızlı bir şekilde alınır ve daha fazla zaman alan bir disk okumasını atlar. Paylaşılan arabellekler, veritabanı işlemleriyle disk arasında bir aracı görevi görür ve gerekli G/Ç işlemlerinin sayısını etkili bir şekilde azaltır.
Azure'a özgü notlar
Sunucu parametresinin shared_buffers
varsayılan değeri, işlem için seçtiğiniz ürün adına göre esnek PostgreSQL için Azure Veritabanı sunucu örneğini sağladığınızda hesaplanır. Esnek sunucuyu destekleyen işlemde ürün seçiminde yapılan sonraki değişiklikler, bu örneğin sunucu parametresi için shared_buffers
varsayılan değer üzerinde herhangi bir etkiye sahip değildir.
Bir örneğe atanan ürünü her değiştirdiğinizde, parametrenin değerini shared_buffers
aşağıdaki formüllerdeki değerlere göre de ayarlamanız gerekir.
En fazla 2 GiB belleğe sahip sanal makineler için değerini shared_buffers
hesaplamak için kullanılan formül olur memoryGib * 16384
.
2 GiB'den fazla sanal makine için değerini shared_buffers
hesaplamak için kullanılan formül şeklindedir memoryGib * 32768
.
Önceki formüle bağlı olarak, aşağıdaki tabloda sağlanan bellek miktarına bağlı olarak bu sunucu parametresinin ayarlanacağı değerler listelenmiştir:
Bellek boyutu | shared_buffers |
---|---|
2 GiB | 32768 |
4 GiB | 131072 |
8 GiB | 262144 |
16 GiB | 524288 |
32 GiB | 1048576 |
48 GiB | 1572864 |
64 GiB | 2097152 |
80 GiB | 2621440 |
128 GiB | 4194304 |
160 GiB | 5242880 |
192 GiB | 6291456 |
256 GiB | 8388608 |
384 GiB | 12582912 |
432 GiB | 14155776 |
672 GiB | 22020096 |
shared_memory_type
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | Ana paylaşılan bellek bölgesi için kullanılan paylaşılan bellek uygulamasını seçer. |
Veri türü | listeleme |
Default value | mmap |
İzin verilen değerler | mmap |
Parametre türü | salt okunur |
Belgeler | shared_memory_type |
temp_buffers
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | Her veritabanı oturumu tarafından kullanılan en fazla geçici arabellek sayısını ayarlar. |
Veri türü | integer |
Default value | 1024 |
İzin verilen değerler | 100-1073741823 |
Parametre türü | dynamic |
Belgeler | temp_buffers |
work_mem
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | Geçici disk dosyalarına yazmadan önce iç sıralama işlemleri ve karma tabloları tarafından kullanılacak bellek miktarını ayarlar. |
Veri türü | integer |
Default value | 4096 |
İzin verilen değerler | 4096-2097151 |
Parametre türü | dynamic |
Belgeler | work_mem |
Açıklama
work_mem
PostgreSQL'deki parametresi, her veritabanı oturumunun özel bellek alanındaki belirli iç işlemler için ayrılan bellek miktarını denetler. Bu işlemlere örnek olarak sıralama ve karma oluşturma verilebilir.
Paylaşılan bellek alanında yer alan paylaşılan arabelleklerin aksine, work_mem
oturum başına veya sorgu başına özel bellek alanında ayrılır. Yeterli work_mem
bir boyut ayarlayarak bu işlemlerin verimliliğini önemli ölçüde artırabilir ve diske geçici veri yazma gereksinimini azaltabilirsiniz.
Önemli noktalar
- Özel bağlantı belleği:
work_mem
her veritabanı oturumunun kullandığı özel belleğin bir parçasıdır. Bu bellek, kullanılan paylaşılan bellek alanındanshared_buffers
farklıdır. - Sorguya özgü kullanım: Tüm oturumlar veya sorgular kullanmaz
work_mem
. gibiSELECT 1
basit sorguların gerektirmework_mem
olasılığı düşüktür. Ancak, sıralama veya karma oluşturma gibi işlemleri içeren karmaşık sorgularwork_mem
bir 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_mem
kullanabilir.
work_mem izleme ve ayarlama
Öncelikle sıralama veya karma işlemleriyle ilgili sorgu yürütme sürelerinin yavaş olması durumunda sisteminizin performansını sürekli izlemek ve gerektiği gibi ayarlamak work_mem
önemlidir. Azure portalında bulunan araçları kullanarak performansı izlemenin yolları şunlardır:
- Sorgu performansı içgörüleri: Geçici dosyalar oluşturan sorguları tanımlamak için Geçici dosyalara göre en çok kullanılan sorgular sekmesini denetleyin. Bu durum, öğesinin artırılmasına
work_mem
yönelik olası bir gereksinim olduğunu gösterir. - Sorun giderme kılavuzları: Sorunlu sorguları tanımlamak için sorun giderme kılavuzlarındaki Yüksek geçici dosyalar sekmesini kullanın.
Ayrıntılı ayarlama
Parametresini work_mem
yönetirken, genel bir değer ayarlamak yerine ayrıntılı ayarlama yaklaşımını benimsemek genellikle daha verimli olur. Bu yaklaşım, işlemlerin ve kullanıcıların belirli gereksinimlerine göre bellek ayırmanızı sağlar. Ayrıca yetersiz bellek sorunlarıyla karşılaşma riskini de en aza indirir. Bu konuda şu şekilde devam edebilirsiniz:
Kullanıcı düzeyi: Belirli bir kullanıcı öncelikle yoğun bellek kullanan toplama veya raporlama görevlerinde yer alıyorsa, söz konusu kullanıcının değerini özelleştirmeyi
work_mem
göz önünde bulundurun.ALTER ROLE
Kullanıcının işlemlerinin performansını artırmak için komutunu kullanın.İşlev/yordam düzeyi: Belirli işlevler veya yordamlar önemli miktarda geçici dosya oluşturuyorsa, belirli işlev veya yordam düzeyinde değeri artırmak
work_mem
yararlı olabilir. Bu işlemlereALTER FUNCTION
özel olarak daha fazla bellek ayırmak için veyaALTER 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, artanwork_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:
- psql veya tercih ettiğiniz PostgreSQL istemcisini kullanarak veritabanınıza bağlanın.
- 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'
. - Aynı oturumda sorunlu sorguda komutunu çalıştırın
EXPLAIN ANALYZE
. - için
"Sort Method: quicksort Memory: xkB"
çıktıyı gözden geçirin. değerini gösteriyorsa"external merge Disk: xkB"
, değeri artımlı olarak yükseltinwork_mem
ve görünene kadar"quicksort Memory"
yeniden test edin. Sorgunun"quicksort Memory"
artık bellekte çalıştığını belirten sinyallerin görünümü. - Bu yöntem aracılığıyla değeri belirledikten sonra, operasyonel gereksinimlerinize uyacak şekilde genel olarak veya daha ayrıntılı düzeylerde (daha önce açıklandığı gibi) uygulayabilirsiniz.
autovacuum_work_mem
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | Her otomatik vakum çalışan işlemi tarafından kullanılacak en yüksek belleği ayarlar. |
Veri türü | integer |
Default value | -1 |
İzin verilen değerler | -1-2097151 |
Parametre türü | dynamic |
Belgeler | autovacuum_work_mem |
dynamic_shared_memory_type
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | Kullanılan dinamik paylaşılan bellek uygulamasını seçer. |
Veri türü | listeleme |
Default value | posix |
İzin verilen değerler | posix |
Parametre türü | salt okunur |
Belgeler | dynamic_shared_memory_type |
hash_mem_multiplier
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | Karma tablolar için kullanılacak work_mem katı. |
Veri türü | sayısal |
Default value | 1 |
İzin verilen değerler | 1-1000 |
Parametre türü | dynamic |
Belgeler | hash_mem_multiplier |
huge_pages
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | Büyük bellek sayfalarının kullanımını etkinleştirir/devre dışı bırakır. Bu ayar, 4'ten az sanal çekirdeği olan sunucular için geçerli değildir. |
Veri türü | listeleme |
Default value | try |
İzin verilen değerler | on,off,try |
Parametre türü | static |
Belgeler | huge_pages |
Açıklama
Büyük sayfalar, belleğin daha büyük bloklarda yönetilmesini sağlayan bir özelliktir. Standart 4 KB sayfa yerine genellikle 2 MB'a kadar blokları yönetebilirsiniz.
Çok büyük sayfaların kullanılması, CPU'ları etkili bir şekilde boşaltan performans avantajları sunabilir:
- Daha az çeviri lookaside buffer (TLB) hatası gibi bellek yönetimi görevleriyle ilişkili ek yükü azaltır.
- Bellek yönetimi için gereken süreyi kısaltır.
Özellikle, PostgreSQL'de büyük sayfaları yalnızca paylaşılan bellek alanı için kullanabilirsiniz. Paylaşılan bellek alanının önemli bir bölümü paylaşılan arabellekler için ayrılır.
Başka bir avantajı, büyük sayfaların paylaşılan bellek alanının diske değişimini engellemesi ve bu da performansı daha da dengeler.
Öneriler
- Önemli bellek kaynaklarına sahip sunucular için büyük sayfaları devre dışı bırakmaktan kaçının. Çok büyük sayfaları devre dışı bırakmak performansı tehlikeye atabilir.
- Çok büyük sayfaları desteklemeyen daha küçük bir sunucuyla başlıyorsanız ancak bunu destekleyen bir sunucuya ölçeği artırmayı düşünüyorsanız, sorunsuz geçiş ve en iyi performans için ayarını konumunda
TRY
tutunhuge_pages
.
Azure'a özgü notlar
Dört veya daha fazla sanal çekirdek içeren sunucular için, temel alınan işletim sisteminden büyük sayfalar otomatik olarak ayrılır. Bu özellik, dörtten az sanal çekirdeği olan sunucularda kullanılamaz. büyük sayfa sayısı, üzerinde yapılan değişiklikler shared_buffers
de dahil olmak üzere paylaşılan bellek ayarları değiştirilirse otomatik olarak ayarlanır.
maintenance_work_mem
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | VACUUM, Create Index gibi bakım işlemleri için kullanılacak en yüksek belleği ayarlar. |
Veri türü | integer |
Default value | Sunucuya ayrılan kaynaklara (sanal çekirdekler, RAM veya disk alanı) bağlıdır. |
İzin verilen değerler | 1024-2097151 |
Parametre türü | dynamic |
Belgeler | maintenance_work_mem |
Açıklama
maintenance_work_mem
PostgreSQL'deki bir yapılandırma parametresidir. , CREATE INDEX
ve ALTER TABLE
gibi VACUUM
bakım işlemleri için ayrılan bellek miktarını yönetir. 'nin aksine work_mem
, sorgu işlemleri için bellek ayırmayı etkiler, maintenance_work_mem
veritabanı yapısını koruyan ve en iyi duruma getiren görevler için ayrılmıştır.
Önemli noktalar
- Vakum bellek üst sınırı: Ölü tanımlama demetlerinin temizlenmesini artırarak
maintenance_work_mem
hızlandırmak istiyorsanız, ölü tanımlama grubu tanımlayıcılarını toplamak için yerleşik bir sınırlama olduğunuVACUUM
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, öğesininmaintenance_work_mem
bir alt kümesi olarak görev yapar. Diğer bakım görevleri ve veri tanımı işlemleri için bellek ayırmayı etkilemeden otomatik vakum işlevinin ne kadar bellek kullandığına karar vekleyebilirsiniz.
Azure'a özgü notlar
Sunucu parametresinin maintenance_work_mem
varsayılan değeri, işlem için seçtiğiniz ürün adına göre esnek PostgreSQL için Azure Veritabanı sunucu örneğini sağladığınızda hesaplanır. Esnek sunucuyu destekleyen işlemde ürün seçiminde yapılan sonraki değişiklikler, o örneğin sunucu parametresi için maintenance_work_mem
varsayılan değer üzerinde herhangi bir etkiye sahip olmayacaktır.
Bir örneğe atanan ürünü her değiştirdiğinizde, parametrenin değerini maintenance_work_mem
aşağıdaki formüldeki değerlere göre de ayarlamanız gerekir.
değerini maintenance_work_mem
hesaplamak için kullanılan formül: (long)(82.5 * ln(memoryGiB) + 40) * 1024
.
Önceki formüle bağlı olarak, aşağıdaki tabloda sağlanan bellek miktarına bağlı olarak bu sunucu parametresinin ayarlanacağı değerler listelenmiştir:
Bellek boyutu | maintenance_work_mem |
---|---|
2 GiB | 99328 KiB |
4 GiB | 157696 KiB |
8 GiB | 216064 KiB |
16 GiB | 274432 KiB |
32 GiB | 332800 KiB |
48 GiB | 367616 KiB |
64 GiB | 392192 KiB |
80 GiB | 410624 KiB |
128 GiB | 450560 KiB |
160 GiB | 468992 KiB |
192 GiB | 484352 KiB |
256 GiB | 508928 KiB |
384 GiB | 542720 KiB |
432 GiB | 552960 KiB |
672 GiB | 590848 KiB |
max_prepared_transactions
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | Eşzamanlı olarak hazırlanmış en fazla işlem sayısını ayarlar. Çoğaltma sunucusunu çalıştırırken, bu parametreyi birincil sunucudakiyle aynı veya daha yüksek bir değere ayarlamanız gerekir. |
Veri türü | integer |
Default value | 0 |
İzin verilen değerler | 0-262143 |
Parametre türü | static |
Belgeler | max_prepared_transactions |
max_stack_depth
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | Maksimum yığın derinliğini kilobayt olarak ayarlar. |
Veri türü | integer |
Default value | 2048 |
İzin verilen değerler | 2048 |
Parametre türü | salt okunur |
Belgeler | max_stack_depth |
shared_buffers
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | Sunucu tarafından kullanılan paylaşılan bellek arabelleklerinin sayısını ayarlar. Birim 8 kb'dir. İzin verilen değerler kullanılabilir belleğin %10 - %75'i aralığındadır. |
Veri türü | integer |
Default value | Sunucuya ayrılan kaynaklara (sanal çekirdekler, RAM veya disk alanı) bağlıdır. |
İzin verilen değerler | 16-1073741823 |
Parametre türü | static |
Belgeler | shared_buffers |
Açıklama
Yapılandırma shared_buffers
parametresi, verileri arabelleğe almak için PostgreSQL veritabanına ayrılan sistem belleği miktarını belirler. Tüm veritabanı işlemleri tarafından erişilebilen merkezi bir bellek havuzu görevi görür.
Veri gerektiğinde, veritabanı işlemi önce paylaşılan arabelleği denetler. Gerekli veriler varsa, hızlı bir şekilde alınır ve daha fazla zaman alan bir disk okumasını atlar. Paylaşılan arabellekler, veritabanı işlemleriyle disk arasında bir aracı görevi görür ve gerekli G/Ç işlemlerinin sayısını etkili bir şekilde azaltır.
Azure'a özgü notlar
Sunucu parametresinin shared_buffers
varsayılan değeri, işlem için seçtiğiniz ürün adına göre esnek PostgreSQL için Azure Veritabanı sunucu örneğini sağladığınızda hesaplanır. Esnek sunucuyu destekleyen işlemde ürün seçiminde yapılan sonraki değişiklikler, bu örneğin sunucu parametresi için shared_buffers
varsayılan değer üzerinde herhangi bir etkiye sahip değildir.
Bir örneğe atanan ürünü her değiştirdiğinizde, parametrenin değerini shared_buffers
aşağıdaki formüllerdeki değerlere göre de ayarlamanız gerekir.
En fazla 2 GiB belleğe sahip sanal makineler için değerini shared_buffers
hesaplamak için kullanılan formül olur memoryGib * 16384
.
2 GiB'den fazla sanal makine için değerini shared_buffers
hesaplamak için kullanılan formül şeklindedir memoryGib * 32768
.
Önceki formüle bağlı olarak, aşağıdaki tabloda sağlanan bellek miktarına bağlı olarak bu sunucu parametresinin ayarlanacağı değerler listelenmiştir:
Bellek boyutu | shared_buffers |
---|---|
2 GiB | 32768 |
4 GiB | 131072 |
8 GiB | 262144 |
16 GiB | 524288 |
32 GiB | 1048576 |
48 GiB | 1572864 |
64 GiB | 2097152 |
80 GiB | 2621440 |
128 GiB | 4194304 |
160 GiB | 5242880 |
192 GiB | 6291456 |
256 GiB | 8388608 |
384 GiB | 12582912 |
432 GiB | 14155776 |
672 GiB | 22020096 |
shared_memory_type
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | Ana paylaşılan bellek bölgesi için kullanılan paylaşılan bellek uygulamasını seçer. |
Veri türü | listeleme |
Default value | mmap |
İzin verilen değerler | mmap |
Parametre türü | salt okunur |
Belgeler | shared_memory_type |
temp_buffers
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | Her veritabanı oturumu tarafından kullanılan en fazla geçici arabellek sayısını ayarlar. |
Veri türü | integer |
Default value | 1024 |
İzin verilen değerler | 100-1073741823 |
Parametre türü | dynamic |
Belgeler | temp_buffers |
work_mem
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | Geçici disk dosyalarına yazmadan önce iç sıralama işlemleri ve karma tabloları tarafından kullanılacak bellek miktarını ayarlar. |
Veri türü | integer |
Default value | 4096 |
İzin verilen değerler | 4096-2097151 |
Parametre türü | dynamic |
Belgeler | work_mem |
Açıklama
work_mem
PostgreSQL'deki parametresi, her veritabanı oturumunun özel bellek alanındaki belirli iç işlemler için ayrılan bellek miktarını denetler. Bu işlemlere örnek olarak sıralama ve karma oluşturma verilebilir.
Paylaşılan bellek alanında yer alan paylaşılan arabelleklerin aksine, work_mem
oturum başına veya sorgu başına özel bellek alanında ayrılır. Yeterli work_mem
bir boyut ayarlayarak bu işlemlerin verimliliğini önemli ölçüde artırabilir ve diske geçici veri yazma gereksinimini azaltabilirsiniz.
Önemli noktalar
- Özel bağlantı belleği:
work_mem
her veritabanı oturumunun kullandığı özel belleğin bir parçasıdır. Bu bellek, kullanılan paylaşılan bellek alanındanshared_buffers
farklıdır. - Sorguya özgü kullanım: Tüm oturumlar veya sorgular kullanmaz
work_mem
. gibiSELECT 1
basit sorguların gerektirmework_mem
olasılığı düşüktür. Ancak, sıralama veya karma oluşturma gibi işlemleri içeren karmaşık sorgularwork_mem
bir 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_mem
kullanabilir.
work_mem izleme ve ayarlama
Öncelikle sıralama veya karma işlemleriyle ilgili sorgu yürütme sürelerinin yavaş olması durumunda sisteminizin performansını sürekli izlemek ve gerektiği gibi ayarlamak work_mem
önemlidir. Azure portalında bulunan araçları kullanarak performansı izlemenin yolları şunlardır:
- Sorgu performansı içgörüleri: Geçici dosyalar oluşturan sorguları tanımlamak için Geçici dosyalara göre en çok kullanılan sorgular sekmesini denetleyin. Bu durum, öğesinin artırılmasına
work_mem
yönelik olası bir gereksinim olduğunu gösterir. - Sorun giderme kılavuzları: Sorunlu sorguları tanımlamak için sorun giderme kılavuzlarındaki Yüksek geçici dosyalar sekmesini kullanın.
Ayrıntılı ayarlama
Parametresini work_mem
yönetirken, genel bir değer ayarlamak yerine ayrıntılı ayarlama yaklaşımını benimsemek genellikle daha verimli olur. Bu yaklaşım, işlemlerin ve kullanıcıların belirli gereksinimlerine göre bellek ayırmanızı sağlar. Ayrıca yetersiz bellek sorunlarıyla karşılaşma riskini de en aza indirir. Bu konuda şu şekilde devam edebilirsiniz:
Kullanıcı düzeyi: Belirli bir kullanıcı öncelikle yoğun bellek kullanan toplama veya raporlama görevlerinde yer alıyorsa, söz konusu kullanıcının değerini özelleştirmeyi
work_mem
göz önünde bulundurun.ALTER ROLE
Kullanıcının işlemlerinin performansını artırmak için komutunu kullanın.İşlev/yordam düzeyi: Belirli işlevler veya yordamlar önemli miktarda geçici dosya oluşturuyorsa, belirli işlev veya yordam düzeyinde değeri artırmak
work_mem
yararlı olabilir. Bu işlemlereALTER FUNCTION
özel olarak daha fazla bellek ayırmak için veyaALTER 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, artanwork_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:
- psql veya tercih ettiğiniz PostgreSQL istemcisini kullanarak veritabanınıza bağlanın.
- 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'
. - Aynı oturumda sorunlu sorguda komutunu çalıştırın
EXPLAIN ANALYZE
. - için
"Sort Method: quicksort Memory: xkB"
çıktıyı gözden geçirin. değerini gösteriyorsa"external merge Disk: xkB"
, değeri artımlı olarak yükseltinwork_mem
ve görünene kadar"quicksort Memory"
yeniden test edin. Sorgunun"quicksort Memory"
artık bellekte çalıştığını belirten sinyallerin görünümü. - Bu yöntem aracılığıyla değeri belirledikten sonra, operasyonel gereksinimlerinize uyacak şekilde genel olarak veya daha ayrıntılı düzeylerde (daha önce açıklandığı gibi) uygulayabilirsiniz.
autovacuum_work_mem
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | Her otomatik vakum çalışan işlemi tarafından kullanılacak en yüksek belleği ayarlar. |
Veri türü | integer |
Default value | -1 |
İzin verilen değerler | -1-2097151 |
Parametre türü | dynamic |
Belgeler | autovacuum_work_mem |
dynamic_shared_memory_type
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | Kullanılan dinamik paylaşılan bellek uygulamasını seçer. |
Veri türü | listeleme |
Default value | posix |
İzin verilen değerler | posix |
Parametre türü | salt okunur |
Belgeler | dynamic_shared_memory_type |
huge_pages
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | Büyük bellek sayfalarının kullanımını etkinleştirir/devre dışı bırakır. Bu ayar, 4'ten az sanal çekirdeği olan sunucular için geçerli değildir. |
Veri türü | listeleme |
Default value | try |
İzin verilen değerler | on,off,try |
Parametre türü | static |
Belgeler | huge_pages |
Açıklama
Büyük sayfalar, belleğin daha büyük bloklarda yönetilmesini sağlayan bir özelliktir. Standart 4 KB sayfa yerine genellikle 2 MB'a kadar blokları yönetebilirsiniz.
Çok büyük sayfaların kullanılması, CPU'ları etkili bir şekilde boşaltan performans avantajları sunabilir:
- Daha az çeviri lookaside buffer (TLB) hatası gibi bellek yönetimi görevleriyle ilişkili ek yükü azaltır.
- Bellek yönetimi için gereken süreyi kısaltır.
Özellikle, PostgreSQL'de büyük sayfaları yalnızca paylaşılan bellek alanı için kullanabilirsiniz. Paylaşılan bellek alanının önemli bir bölümü paylaşılan arabellekler için ayrılır.
Başka bir avantajı, büyük sayfaların paylaşılan bellek alanının diske değişimini engellemesi ve bu da performansı daha da dengeler.
Öneriler
- Önemli bellek kaynaklarına sahip sunucular için büyük sayfaları devre dışı bırakmaktan kaçının. Çok büyük sayfaları devre dışı bırakmak performansı tehlikeye atabilir.
- Çok büyük sayfaları desteklemeyen daha küçük bir sunucuyla başlıyorsanız ancak bunu destekleyen bir sunucuya ölçeği artırmayı düşünüyorsanız, sorunsuz geçiş ve en iyi performans için ayarını konumunda
TRY
tutunhuge_pages
.
Azure'a özgü notlar
Dört veya daha fazla sanal çekirdek içeren sunucular için, temel alınan işletim sisteminden büyük sayfalar otomatik olarak ayrılır. Bu özellik, dörtten az sanal çekirdeği olan sunucularda kullanılamaz. büyük sayfa sayısı, üzerinde yapılan değişiklikler shared_buffers
de dahil olmak üzere paylaşılan bellek ayarları değiştirilirse otomatik olarak ayarlanır.
maintenance_work_mem
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | VACUUM, Create Index gibi bakım işlemleri için kullanılacak en yüksek belleği ayarlar. |
Veri türü | integer |
Default value | Sunucuya ayrılan kaynaklara (sanal çekirdekler, RAM veya disk alanı) bağlıdır. |
İzin verilen değerler | 1024-2097151 |
Parametre türü | dynamic |
Belgeler | maintenance_work_mem |
Açıklama
maintenance_work_mem
PostgreSQL'deki bir yapılandırma parametresidir. , CREATE INDEX
ve ALTER TABLE
gibi VACUUM
bakım işlemleri için ayrılan bellek miktarını yönetir. 'nin aksine work_mem
, sorgu işlemleri için bellek ayırmayı etkiler, maintenance_work_mem
veritabanı yapısını koruyan ve en iyi duruma getiren görevler için ayrılmıştır.
Önemli noktalar
- Vakum bellek üst sınırı: Ölü tanımlama demetlerinin temizlenmesini artırarak
maintenance_work_mem
hızlandırmak istiyorsanız, ölü tanımlama grubu tanımlayıcılarını toplamak için yerleşik bir sınırlama olduğunuVACUUM
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, öğesininmaintenance_work_mem
bir alt kümesi olarak görev yapar. Diğer bakım görevleri ve veri tanımı işlemleri için bellek ayırmayı etkilemeden otomatik vakum işlevinin ne kadar bellek kullandığına karar vekleyebilirsiniz.
Azure'a özgü notlar
Sunucu parametresinin maintenance_work_mem
varsayılan değeri, işlem için seçtiğiniz ürün adına göre esnek PostgreSQL için Azure Veritabanı sunucu örneğini sağladığınızda hesaplanır. Esnek sunucuyu destekleyen işlemde ürün seçiminde yapılan sonraki değişiklikler, o örneğin sunucu parametresi için maintenance_work_mem
varsayılan değer üzerinde herhangi bir etkiye sahip olmayacaktır.
Bir örneğe atanan ürünü her değiştirdiğinizde, parametrenin değerini maintenance_work_mem
aşağıdaki formüldeki değerlere göre de ayarlamanız gerekir.
değerini maintenance_work_mem
hesaplamak için kullanılan formül: (long)(82.5 * ln(memoryGiB) + 40) * 1024
.
Önceki formüle bağlı olarak, aşağıdaki tabloda sağlanan bellek miktarına bağlı olarak bu sunucu parametresinin ayarlanacağı değerler listelenmiştir:
Bellek boyutu | maintenance_work_mem |
---|---|
2 GiB | 99328 KiB |
4 GiB | 157696 KiB |
8 GiB | 216064 KiB |
16 GiB | 274432 KiB |
32 GiB | 332800 KiB |
48 GiB | 367616 KiB |
64 GiB | 392192 KiB |
80 GiB | 410624 KiB |
128 GiB | 450560 KiB |
160 GiB | 468992 KiB |
192 GiB | 484352 KiB |
256 GiB | 508928 KiB |
384 GiB | 542720 KiB |
432 GiB | 552960 KiB |
672 GiB | 590848 KiB |
max_prepared_transactions
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | Eşzamanlı olarak hazırlanmış en fazla işlem sayısını ayarlar. Çoğaltma sunucusunu çalıştırırken, bu parametreyi birincil sunucudakiyle aynı veya daha yüksek bir değere ayarlamanız gerekir. |
Veri türü | integer |
Default value | 0 |
İzin verilen değerler | 0-262143 |
Parametre türü | static |
Belgeler | max_prepared_transactions |
max_stack_depth
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | Maksimum yığın derinliğini kilobayt olarak ayarlar. |
Veri türü | integer |
Default value | 2048 |
İzin verilen değerler | 2048 |
Parametre türü | salt okunur |
Belgeler | max_stack_depth |
shared_buffers
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | Sunucu tarafından kullanılan paylaşılan bellek arabelleklerinin sayısını ayarlar. Birim 8 kb'dir. İzin verilen değerler kullanılabilir belleğin %10 - %75'i aralığındadır. |
Veri türü | integer |
Default value | Sunucuya ayrılan kaynaklara (sanal çekirdekler, RAM veya disk alanı) bağlıdır. |
İzin verilen değerler | 16-1073741823 |
Parametre türü | static |
Belgeler | shared_buffers |
Açıklama
Yapılandırma shared_buffers
parametresi, verileri arabelleğe almak için PostgreSQL veritabanına ayrılan sistem belleği miktarını belirler. Tüm veritabanı işlemleri tarafından erişilebilen merkezi bir bellek havuzu görevi görür.
Veri gerektiğinde, veritabanı işlemi önce paylaşılan arabelleği denetler. Gerekli veriler varsa, hızlı bir şekilde alınır ve daha fazla zaman alan bir disk okumasını atlar. Paylaşılan arabellekler, veritabanı işlemleriyle disk arasında bir aracı görevi görür ve gerekli G/Ç işlemlerinin sayısını etkili bir şekilde azaltır.
Azure'a özgü notlar
Sunucu parametresinin shared_buffers
varsayılan değeri, işlem için seçtiğiniz ürün adına göre esnek PostgreSQL için Azure Veritabanı sunucu örneğini sağladığınızda hesaplanır. Esnek sunucuyu destekleyen işlemde ürün seçiminde yapılan sonraki değişiklikler, bu örneğin sunucu parametresi için shared_buffers
varsayılan değer üzerinde herhangi bir etkiye sahip değildir.
Bir örneğe atanan ürünü her değiştirdiğinizde, parametrenin değerini shared_buffers
aşağıdaki formüllerdeki değerlere göre de ayarlamanız gerekir.
En fazla 2 GiB belleğe sahip sanal makineler için değerini shared_buffers
hesaplamak için kullanılan formül olur memoryGib * 16384
.
2 GiB'den fazla sanal makine için değerini shared_buffers
hesaplamak için kullanılan formül şeklindedir memoryGib * 32768
.
Önceki formüle bağlı olarak, aşağıdaki tabloda sağlanan bellek miktarına bağlı olarak bu sunucu parametresinin ayarlanacağı değerler listelenmiştir:
Bellek boyutu | shared_buffers |
---|---|
2 GiB | 32768 |
4 GiB | 131072 |
8 GiB | 262144 |
16 GiB | 524288 |
32 GiB | 1048576 |
48 GiB | 1572864 |
64 GiB | 2097152 |
80 GiB | 2621440 |
128 GiB | 4194304 |
160 GiB | 5242880 |
192 GiB | 6291456 |
256 GiB | 8388608 |
384 GiB | 12582912 |
432 GiB | 14155776 |
672 GiB | 22020096 |
temp_buffers
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | Her veritabanı oturumu tarafından kullanılan en fazla geçici arabellek sayısını ayarlar. |
Veri türü | integer |
Default value | 1024 |
İzin verilen değerler | 100-1073741823 |
Parametre türü | dynamic |
Belgeler | temp_buffers |
work_mem
Öznitelik | Değer |
---|---|
Kategori | Kaynak Kullanımı / Bellek |
Açıklama | Geçici disk dosyalarına yazmadan önce iç sıralama işlemleri ve karma tabloları tarafından kullanılacak bellek miktarını ayarlar. |
Veri türü | integer |
Default value | 4096 |
İzin verilen değerler | 4096-2097151 |
Parametre türü | dynamic |
Belgeler | work_mem |
Açıklama
work_mem
PostgreSQL'deki parametresi, her veritabanı oturumunun özel bellek alanındaki belirli iç işlemler için ayrılan bellek miktarını denetler. Bu işlemlere örnek olarak sıralama ve karma oluşturma verilebilir.
Paylaşılan bellek alanında yer alan paylaşılan arabelleklerin aksine, work_mem
oturum başına veya sorgu başına özel bellek alanında ayrılır. Yeterli work_mem
bir boyut ayarlayarak bu işlemlerin verimliliğini önemli ölçüde artırabilir ve diske geçici veri yazma gereksinimini azaltabilirsiniz.
Önemli noktalar
- Özel bağlantı belleği:
work_mem
her veritabanı oturumunun kullandığı özel belleğin bir parçasıdır. Bu bellek, kullanılan paylaşılan bellek alanındanshared_buffers
farklıdır. - Sorguya özgü kullanım: Tüm oturumlar veya sorgular kullanmaz
work_mem
. gibiSELECT 1
basit sorguların gerektirmework_mem
olasılığı düşüktür. Ancak, sıralama veya karma oluşturma gibi işlemleri içeren karmaşık sorgularwork_mem
bir 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_mem
kullanabilir.
work_mem izleme ve ayarlama
Öncelikle sıralama veya karma işlemleriyle ilgili sorgu yürütme sürelerinin yavaş olması durumunda sisteminizin performansını sürekli izlemek ve gerektiği gibi ayarlamak work_mem
önemlidir. Azure portalında bulunan araçları kullanarak performansı izlemenin yolları şunlardır:
- Sorgu performansı içgörüleri: Geçici dosyalar oluşturan sorguları tanımlamak için Geçici dosyalara göre en çok kullanılan sorgular sekmesini denetleyin. Bu durum, öğesinin artırılmasına
work_mem
yönelik olası bir gereksinim olduğunu gösterir. - Sorun giderme kılavuzları: Sorunlu sorguları tanımlamak için sorun giderme kılavuzlarındaki Yüksek geçici dosyalar sekmesini kullanın.
Ayrıntılı ayarlama
Parametresini work_mem
yönetirken, genel bir değer ayarlamak yerine ayrıntılı ayarlama yaklaşımını benimsemek genellikle daha verimli olur. Bu yaklaşım, işlemlerin ve kullanıcıların belirli gereksinimlerine göre bellek ayırmanızı sağlar. Ayrıca yetersiz bellek sorunlarıyla karşılaşma riskini de en aza indirir. Bu konuda şu şekilde devam edebilirsiniz:
Kullanıcı düzeyi: Belirli bir kullanıcı öncelikle yoğun bellek kullanan toplama veya raporlama görevlerinde yer alıyorsa, söz konusu kullanıcının değerini özelleştirmeyi
work_mem
göz önünde bulundurun.ALTER ROLE
Kullanıcının işlemlerinin performansını artırmak için komutunu kullanın.İşlev/yordam düzeyi: Belirli işlevler veya yordamlar önemli miktarda geçici dosya oluşturuyorsa, belirli işlev veya yordam düzeyinde değeri artırmak
work_mem
yararlı olabilir. Bu işlemlereALTER FUNCTION
özel olarak daha fazla bellek ayırmak için veyaALTER 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, artanwork_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:
- psql veya tercih ettiğiniz PostgreSQL istemcisini kullanarak veritabanınıza bağlanın.
- 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'
. - Aynı oturumda sorunlu sorguda komutunu çalıştırın
EXPLAIN ANALYZE
. - için
"Sort Method: quicksort Memory: xkB"
çıktıyı gözden geçirin. değerini gösteriyorsa"external merge Disk: xkB"
, değeri artımlı olarak yükseltinwork_mem
ve görünene kadar"quicksort Memory"
yeniden test edin. Sorgunun"quicksort Memory"
artık bellekte çalıştığını belirten sinyallerin görünümü. - 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.