Link Search Menu Expand Document

Sorgu Planlama

Planner Method Yapılandırması

Bu yapılandırma parametreleri, query optimizer tarafından seçilen sorgu planlarını ayarlamak sağlanmıştır. Bir sorgu için optimizer tarafından seçilen plan en iyi değilse, optimizer’ı farklı bir plan seçmeye zorlamak için bu konfigürasyon parametreleri kullanılır. Optimizer tarafından seçilen planların kalitesini iyileştirmenin diğer yolları; planlayıcı maliyet sabitlerinin ayarlanması, ANALYZE’ın manuel olarak çalıştırılması, default_statistics_target değerinin artırılması ve belirli sütunlar için toplanan istatistik miktarının ALTER TABLE SET STATISTICS’ komutu ile artırılmasıdır.

enable_bitmapscan

type: bool default: on context: user
Sorgu planlayıcısının bitmap-scan plan türlerini kullanmasını etkinleştirir / devre dışı bırakır. Varsayılan açıktır.

enable_gathermerge

type: bool default: on context: user
Sorgu planlayıcısının gather merge plan türlerini kullanmasını etkinleştirir / devre dışı bırakır. Varsayılan açıktır.

enable_hashagg

type: bool default: on context: user
Sorgu planlayıcısının hashed aggregation plan türlerini kullanmasını etkinleştirir / devre dışı bırakır. Varsayılan açıktır.

enable_hashjoin

type: bool default: on context: user
Sorgu planlayıcısının hash-join plan türlerini kullanmasını etkinleştirir / devre dışı bırakır. Varsayılan açıktır.

enable_incremental_sort

type: bool default: on context: user
Sorgu planlayıcısının incremental sort adımlarını kullanmasını etkinleştirir / devre dışı bırakır. Varsayılan açıktır.

enable_indexscan

type: bool default: on context: user
Sorgu planlayıcısının index-scan plan türlerini kullanmasını etkinleştirir / devre dışı bırakır. Varsayılan açıktır.

enable_indexonlyscan

type: bool default: on context: user
Sorgu planlayıcısının index-only-scan plan türlerini kullanmasını etkinleştirir / devre dışı bırakır (bkz. ). Varsayılan açıktır.

enable_material

type: bool default: on context: user
Sorgu planlayıcısının materialization kullanmasını etkinleştirir / devre dışı bırakır. Materialization’u tamamen durdurmak imkansızdır. Bu değişkeni kapatmak planlayıcının materialize düğümler eklemesini engeller (uygunluk için gerekli olduğu durumlar dışında). Varsayılan açıktır.

enable_mergejoin

type: bool default: on context: user
Sorgu planlayıcısının merge-join plan türlerini kullanmasını etkinleştirir / devre dışı bırakır. Varsayılan açıktır.

enable_nestloop

type: bool default: on context: user
Sorgu planlayıcısının nested-loop join planlarını kullanmasını etkinleştirir / devre dışı bırakır. nested-loop joins’i tamamen durdurmak mümkün değildir. Bu değişkeni kapatmak, mevcut başka yöntemler varsa planlayıcıyı bunları kullanmaya iter. Varsayılan açıktır.

enable_parallel_append

type: bool default: on context: user
Sorgu planlayıcısının parallel append plan türlerini kullanmasını etkinleştirir / devre dışı bırakır. Varsayılan açıktır.

enable_parallel_hash

type: bool default: on context: user
Sorgu planlayıcısının paralel hash ile hash-join plan türlerini kullanmasını etkinleştirir / devre dışı bırakır. hash-join planları da etkin değilse hiçbir etkisi yoktur. Varsayılan açıktır.

enable_partition_pruning

type: bool default: on context: user
Sorgu planlayıcısının bölümlenmiş bir tablonun bölümlerini, sorgu planlarından kaldırma yeteneğini etkinleştirir / devre dışı bırakır. Aynı zamanda planlayıcının, executor’ın sorgu yürütme sırasında bölümleri kaldırmasını (yok saymasına) sağlayan sorgu planları oluşturma yeteneğini de kontrol eder. Varsayılan açıktır. bkz..

enable_partitionwise_join

type: bool default: off context: user
Sorgu planlayıcısının partition-wise join kullanmasını etkinleştirir / devre dışı bırakır. Partitioned tablolar arasında eşleşen bölümlerin birleştirilmesiyle gerçekleşecek join’lere izin verir. Partition-wise join, şu anda yalnızca join koşullarının aynı veri tipinde partition key içerdiğinde ve alt bölüm kümelerinin bire bir eşleştiğinde yapılabilmektedir. Partition-wise join planlaması, planlama sırasında önemli ölçüde CPU zamanı ve bellek kullandığı için varsayılan olarak kapalıdır.

enable_partitionwise_aggregate

type: bool default: off context: user
Sorgu planlayıcısının partition-wise grouping ve aggregation kullanımını etkinleştirir / devre dışı bırakır. GROUP BY yan tümcesi partition keys içermiyorsa, her bölümde yalnızca partial aggregation gerçekleştirilebilir, finalization daha sonra gerçekleştirilmelidir. Partition-wise grouping ve aggregation, planlama sırasında önemli ölçüde CPU zamanı ve bellek tüketeceğinden varsayılan olarak kapalıdır.

enable_seqscan

type: bool default: on context: user
Sorgu planlayıcısının sequential scan plan türlerini kullanmasını etkinleştirir / devre dışı bırakır. Sıralı taramaları tamamen kapatmak mümkün değildir. Bu değişkeni kapalı ayarlamak planlayıcıyı başka yöntemler varsa bunları kullanmaya iter. Varsayılan açıktır.

enable_sort

type: bool default: on context: user
Sorgu planlayıcısının explicit sort adımlarını kullanmasını etkinleştirir / devre dışı bırakır. Explicit sort’u tamamen kapamak mümkün değildir. Bu değişken kapalı ayarında planlayıcıyı başka yöntemler varsa bunları kullanmaya iter. Varsayılan açıktır.

enable_tidscan

type: bool default: on context: user
Sorgu planlayıcısının TID scan plan türlerini kullanmasını etkinleştirir / devre dışı bırakır. Varsayılan açıktır.

Planlayıcı Maliyet Sabitleri

Bu bölümde açıklanan cost (maliyet) değişkenleri keyfi bir skalada ölçülür ve yalnızca bağıl değerleri önemlidir. Bu nedenle hepsini aynı çarpanla yukarı veya aşağı ölçeklendirmek, planlayıcının seçimlerinde hiçbir değişikliğe neden olmaz. Bu maliyet değişkenleri, varsayılan olarak sıralı page getirmelerinin maliyeti temellidir. seq_page_cost geleneksel olarak 1.0‘a ayarlanır ve diğer maliyet değişkenleri bu referansa göre ayarlanır. Farklı bir skala kullanmak mümkündür.

Maliyet değişkenleri için ideal değerler belinirken mükemmel tanımlanmış bir yöntem yoktur. En iyi yöntem, kurulumun alacağı tüm sorguların karışımının ortalamalarıdır. Bu, değerlerin birkaç deney temelinde değiştirilmesinin çok riskli olduğu anlamına gelir.

seq_page_cost

type: real default: 1 min: 0 max: 1.79769e+308 context: user
Planlayıcının, bir disk sayfasının sequentially fetch maliyetine ilişkin tahminini ayarlar. Varsayılan değer 1.0’dır. Bu değer, belirli bir tablespace’deki tablo ve indeksler için ilgili tablespace parametresi kullanılarak geçersiz kılınabilir (bkz. ALTER TABLESPACE).

random_page_cost

type: real default: 4 min: 0 max: 1.79769e+308 context: user
Planlayıcının, sıralı olarak getirilmeyen bir disk sayfasının maliyetine ilişkin tahmini ayarlar. Varsayılan 4.0’dır. Bu değer, belirli bir tablespace’deki tablo ve indeksler için ilgili tablespace parametresi kullanılarak geçersiz kılınabilir (bkz. ALTER TABLESPACE).

Bu değerin seq_page_cost değerine göre azaltılması, sistemin indeks taramalarını tercih etmesine; yükseltmek ise, indeks taramalarının daha maliyetli görünmesine sebep olacaktır. Aşağıdaki parametrelerde açıklanan CPU maliyetlerine göre disk I / O maliyetlerinin önemini değiştirmek için her iki değeri birlikte artırabilir / azaltabilirsiniz.

Mekanik disk depolamaya rastgele erişim, sıralı erişimden genellikle 4 kattan daha fazla maliyetlidir. Ancak, diske rastgele erişimlerin çoğunun önbellekte olduğu durumlarda ( indekslenmiş okumalar gibi ) daha düşük bir varsayılan kullanılır. Varsayılan değer rastgele erişimi sıralı erişimden 40 kat daha yavaş modellemek olarak düşünülebilir, rastgele okumaların %90’ının önbelleğe alınmasını bekler.

İş yükünüz için %90 önbellek oranının hatalı bir varsayım olduğuna inanıyorsanız, rastgele depolama okumalarının gerçek maliyetini daha iyi yansıtmak için random_page_cost‘u artırabilirsiniz. Buna karşılık olarak, verilerinizin tamamen önbellekte olma olasılığı varsa, örneğin veritabanı toplam sunucu belleğinden küçükse, random_page_cost‘u düşürmek uygun olabilir. Solid-state sürücüler gibi, sıralı okumaya göre düşük rastgele okuma maliyetine sahip depolamalar daha düşük değerlerle daha verimli modellenebilir

cpu_tuple_cost

type: real default: 0.01 min: 0 max: 1.79769e+308 context: user
Sorgu sırasında planner’ın her satırı işleme maliyetine ilişkin tahminini ayarlar. Öntanımlı değeri 0.01’dir.

cpu_index_tuple_cost

type: real default: 0.005 min: 0 max: 1.79769e+308 context: user
Planlayıcının, bir indesk taraması sırasında her bir indeks girişini işleme maliyetine ilişkin tahminini ayarlar. Öntanımlı değeri 0,005’tir.

cpu_operator_cost

type: real default: 0.0025 min: 0 max: 1.79769e+308 context: user
Planlayıcının bir sorgu sırasında yürütülen her operatör ve fonksiyonu işleme maliyetine ilişkin tahminini ayarlar. Öntanımlı değeri 0,0025’tir.

parallel_setup_cost

type: real default: 1000 min: 0 max: 1.79769e+308 context: user
Planlayıcının paralel worker süreçlerini başlatma maliyetine ilişkin tahminini ayarlar. Öntanımlı değeri 1000’dir.

parallel_tuple_cost

type: real default: 0.1 min: 0 max: 1.79769e+308 context: user
Planlayıcının bir tuple’ı bir paralel worker sürecinde başka bir sürece aktarmanın maliyetine ilişkin tahminini ayarlar. Öntanımlı değeri 0.1’dir.

min_parallel_table_scan_size

type: integer default: 8 MB min: 0 max: 715827882 unit: 8kB context: user
Paralel scan’in dikkate alınması için taranması gereken minimum tablo verisi boyutunu ayarlar. Paralel sequential scan’de taranan tablo verisi miktarı her zaman tablo boyutuna eşittir. İndeks kullanıldığında bu boyut daha az olur. Bu değer birimsiz belirtilirse bloklar ( BLCKSZ bayt, genellikle 8kB’dir ) olarak alınır. Öntanımlı değeri 8 megabayttır (8MB).

min_parallel_index_scan_size

type: integer default: 512 kB min: 0 max: 715827882 unit: 8kB context: user
Paralel scan’in dikkate alınması için taranması gereken minimum indeks verisi boyutunu ayarlar. Paralel indeks scan’in genellikle indeksin tamamına bakmaz. Bu, planlayıcının taramada gerçekten dokunulacağına inandığı ilgili sayfaların sayısıdır. Bu parametre aynı zamanda belirli bir indeksin paralel vacuum katılıp katılamayacağına karar vermek için de kullanılır. ( bkz. VAKUM). Bu değer birim olmadan belirtilirse bloklar ( BLCKSZ bayt, genellikle 8kB’dir ) olarak alınır. Öntanımlı değeri 512 kilobayttır (512kB).

effective_cache_size

type: integer default: 4 GB min: 1 max: 2147483647 unit: 8kB context: user
Planlayıcının, bir sorgu için kullanılabilir etkin disk önbelleği boyutu hakkındaki varsayımını belirtir. Bu değer indeks kullanım maliyet tahminlerinde hesaba katılır. Daha yüksek bir değer, index scan kullanılma olasılığını artırır; daha düşük bir değer, sequential scan kullanılma olasılığını artırır. Bu parametreyi ayarlarken, PostgreSQL shared buffer ve veri dosyalarını içeren işletim sistemi önbelleğini dikkate alınmalıdır. Bazı veriler her ikisinde de mevcut olabilir. Ayrıca, farklı tablolardaki eşzamanlı sorgu sayısını, kullanılabilir alanı paylaşmak zorunda kalacakları için dikkate alın. Bu parametrenin PostgreSQL tarafından ayrılan shared memory boyutu ve çekirdek disk önbelleği üzerinde bir etkisi yoktur. Sadece tahmin amaçlı kullanılır. Bu değer birisiz belirtildiğinde bloklar olarak alınır (BLCKSZ bayt, genellikle 8kB’dir). Öntanımlı değeri 4 gigabayttır (4 GB). BLCKSZ 8kB değilse, varsayılan değer bununla orantılı olarak ölçeklenir.

jit_above_cost

type: real default: 100000 min: -1 max: 1.79769e+308 context: user
Etkinleştirilmişse, JIT ( Just-in-Time ) derlemesinin aktif olduğu sorgu maliyetini belirtir bkz. . JIT gerçekleştirmek, planlama süresi maliyeti getirir ancak sorgu yürütmeyi hızlandırabilir. Bu parametreyi -1 olarak ayarlamak JIT derlemesini devre dışı bırakır. Öntanımlı değeri 100000’dir.

jit_inline_above_cost

type: real default: 500000 min: -1 max: 1.79769e+308 context: user
JIT derlemesinin, inline işlevler ve operatörler yapmaya çalıştığı sorgu maliyetini belirtir. Inlining, planlama süresini beraberinde getirir ancak yürütme hızını artırabilir. Bu paremetreyi jit_above_cost‘tan daha küçük bir değere ayarlamak anlamlı değildir. Bu parametre için -1 değeri Inlining’i devre dışı bırakır. Öntanımlı değeri 500000’dir.

jit_optimize_above_cost

type: real default: 500000 min: -1 max: 1.79769e+308 context: user
JIT derlemesinin maliyetli optimizasyonları uyguladığı sorgu maliyetini ayarlar. Bu tür bir optimizasyon planlama süresine mal olur, ancak yürütme hızını artırabilir. Bu parametreyi, jit_above_cost‘tan daha küçük bir değere ayarlamak anlamlı değildir ve jit_inline_above_cost‘tan daha fazlasına ayarlamak pek faydalı olmayacaktır. Bu parametre için -1 değeri maliyetli optimizasyonları devre dışı bırakır. Öntanımlı değeri 500000’dir.

Genetic Query Optimizer

Genetic query optimizer (GEQO), sezgisel arama (heuristic searching) kullanarak sorgu planlaması yapan bir algoritmadır. GEQO karmaşık sorgular için planlama süresini azaltır.

geqo

type: bool default: on context: user
Genetik sorgu optimizasyonunu etkinleştirir / devre dışı bırakır. Varsayılan açıktır. Production’da kapatmamak tavsiye edilir. geqo_threshold parametresi, GEQO’nun daha ayrıntılı denetimini sağlar.

geqo_threshold

type: integer default: 12 min: 2 max: 2147483647 context: user
En az bu parametre değeri kadar FROM öğesi içeren sorguları planlamak için genetik sorgu optimizasyonunu kullanır. Bir FULL OUTER JOIN yapısı yalnızca bir FROM öğesi olarak sayılır. Öntanımlı değeri 12’dir. Daha basit sorgular için normal (exhaustive-search) planlayıcı yeterlidir. Birden çok tablo içeren sorgular için exhaustive-search genellikle yetersiz bir planı uyguladığından uzun sürer. Bu nedenle, sorgunun boyutuna ilişkin bir eşik, GEQO kullanımını yönetmenin uygun bir yoludur.

geqo_effort

type: integer default: 5 min: 1 max: 10 context: user
GEQO’da planlama süresi ve sorgu planı kalitesi arasındaki dengeyi kontrol eder. Bu değişken, 1 ile 10 arasında değerler alır. Öntanımlı değeri 5’tir. Daha büyük değerler sorgu planlaması için harcanan zamanı artırırken verimli bir sorgu planının seçilme olasılığını artırır.

geqo_effort aslında doğrudan hiçbir şey yapmaz, yalnızca GEQO davranışını etkileyen diğer değişkenlerin varsayılan değerlerini hesaplamak için kullanılır. Diğer parametreleri isterseniz elle de ayarlayabilirsiniz.

geqo_pool_size

type: integer default: 0 min: 0 max: 2147483647 context: user
GEQO tarafından kullanılan havuz boyutunu kontrol eder. Bu değer en az 2 olmalıdır, önerilen değerler 100 ile 1000 arasıdır. 0 olarak ayarlanırsa (öntanımlı ayar), geqo_effort ve sorgudaki tabloların sayısına göre uygun bir değer seçilir.

geqo_generations

type: integer default: 0 min: 0 max: 2147483647 context: user
GEQO tarafından kullanılan nesil sayısını, yani algoritmanın iteration sayısını kontrol eder. Bu değer en az 1 olmalıdır. Önerilen değerler havuz boyutuyla aynı aralıktadır. 0 değerine (varsayılan) ayarlandığında geqo_pool_size‘a dayalı uygun bir değer seçilir.

geqo_selection_bias

type: real default: 2 min: 1.5 max: 2 context: user
GEQO tarafından kullanılan seçim eğilimini denetler. Seçim eğilimi, popülasyon içindeki seçici baskıdır. 1,50 ile 2,00 arasında değerler alabilir. 2.0 varsayılandır.

geqo_seed

type: real default: 0 min: 0 max: 1 context: user
GEQO tarafından rastgele yollar seçmek için kullanılan rastgele sayı üretecinin başlangıç ​​değerini kontrol eder. Değer 0 (varsayılan) ile 1 arasında değerler alır. Değerin değiştirilmesi, keşfedilen birleştirme yolları kümesini değiştirir ve daha iyi / kötü bir yolun bulunmasıyla sonuçlanabilir.

Diğer Planlayıcı Seçenekleri

default_statistics_target

type: integer default: 100 min: 1 max: 10000 context: user
ALTER TABLE SET STATISTICS ile sütuna özgü bir hedef ayarlanmamış tablo sütunları için varsayılan istatistik hedefini ayarlar. Daha büyük değerler ANALYZE yapmak için gereken maliyeti artırmakla birlikte planlayıcının tahmin kalitesini artırabilir. Öntanımlı değeri 100’dür. PostgreSQL sorgu planlayıcı tarafından istatistiklerin kullanımı hakkında daha fazla bilgi için bkz. .

constraint_exclusion

type: enum default: partition context: user values: [partition, on, off]
Sorgu planlayıcısının sorguları optimize etmek için tablo kısıtlamalarını kullanmasını kontrol eder. constraint_exclusion parametresinin alabileceği değerler on (tüm tablolar için kısıtlamaları incele), off (kısıtlamaları asla inceleme) ve partition (kısıtlamaları yalnızca inheritance child tabloları ve UNION ALL alt sorguları için incele). partition varsayılan ayardır. Genellikle performansı artırmak için geleneksel inheritance trees birlikte kullanılır.

Bu parametre belirli bir tablo için izin verdiğinde, planlayıcı sorgu koşullarını tablonun CHECK kısıtlamalarıyla karşılaştırır ve koşulların kısıtlamalarla çeliştiği tarama tablolarını atlar. Örneğin:
CREATE TABLE parent(key integer, ...);
CREATE TABLE child1000(check (key between 1000 and 1999)) INHERITS(parent);
CREATE TABLE child2000(check (key between 2000 and 2999)) INHERITS(parent);
...
SELECT * FROM parent WHERE key = 2400;
constraint exclusion etkinleştirildiğinde, verilen SELECT, child1000’i hiç taramayacak ve performans artacaktır.

Şu anda constraint exclusion, yalnızca kalıtım ağaçları (inheritance tree) aracılığıyla partitioning yapmak için varsayılan olarak etkinleştirilmiştir. Bunu tüm tablolar için açmak, basit sorgularda kayda değer derecede ekstra planlama yükü getirir, çoğu durumda basit sorgular için hiçbir fayda sağlamaz. Geleneksel kalıtım kullanılarak bölümlenmiş tablonuz yoksa tamamen kapatılabilir.

Partitioning için constraint exclusion kullanımı hakkında daha fazla bilgi için bkz. .

cursor_tuple_fraction

type: real default: 0.1 min: 0 max: 1 context: user
Planlayıcının, imleç satırlarının alınacak kısmına ilişkin tahminini ayarlar. Öntanımlı değeri 0.1’dir. Bu parametre için daha küçük değerler planlayıcıyı imleçler için ‘fast start’ planlarını kullanmaya yönlendirir. Bu şekilde, ilk birkaç satırı hızlı bir şekilde alırnırken tüm satırları getirmesi uzun zaman alabilir. Daha büyük değerler, toplam tahmini süreye daha fazla önem verir. Maksimum 1.0 ayarında, imleçler tam olarak normal sorgular gibi planlanarak ilk satırların ne kadar çabuk teslim edilebileceğini değil, yalnızca toplam tahmini süreyi göz önünde bulundurur.

from_collapse_limit

type: integer default: 8 min: 1 max: 2147483647 context: user
Planlayıcı, sonuçta ortaya çıkan FROM listesi bu değerden çok öğe içermiyorsa, alt sorguları üst sorgularda birleştirir. Daha küçük değerler planlama süresini azaltır, ancak daha kalitesiz sorgu planlarına neden olabilir. Öntanımlı değeri 8’dir. Daha fazla bilgi için bkz .

Bu değerin geqo_threshold‘a veya daha fazlasına ayarlanması, GEQO planlayıcısının kullanımını tetikleyerek optimal olmayan planlarla sonuçlanabilir.

jit

type: bool default: on context: user
JIT derlemesinin PostgreSQL tarafından kullanılıp kullanılamayacağını belirler bkz. . Varsayılan açıktır.

join_collapse_limit

type: integer default: 8 min: 1 max: 2147483647 context: user
Bu parametre değerinden az öğe içeren bir liste ortaya çıktığında planlayıcı explicit JOIN yapılarını (FULL JOIN’ler hariç) FROM-list’de yeniden yazar. Daha küçük değerler planlama süresini azaltır, ancak daha kalitesiz sorgu planlarına neden olabilir.

Bu değişken, varsayılan olarak çoğu kullanım için uygun olan from_collapse_limit parametresi ile aynı şekilde ayarlanır. 1 olarak ayarlamak, explicit JOIN’lerin yeniden sıralanmasını önler. Bu nedenle, sorguda belirtilen explicit join sırası, ilişkiler join edildikten sonra değişmez. Daha fazla bilgi için bkz. .

Bu değerin geqo_threshold veya daha fazlasına ayarlanması, GEQO planlayıcısının kullanımını tetikleyerek optimal olmayan planlar getirebilir. bkz. Genetic Query Optimizer.

parallel_leader_participation

type: bool default: on context: user
Lider sürecin, worker süreçleri beklemek yerine Gather ve Gather Merge düğümleri altında sorgu planı yürütmesini kontrol eder. Varsayılan on‘dur. Bu parametrenin off olarak ayarlanması, liderin yeterince hızlı tuple’ları okumaması nedeniyle worker’ların bloke olma ihtimalini azaltır. Ancak lider süreç ilk tuple’lar üretilmeden önce worker süreçlerin başlamasını beklemelidir. Liderin performansa ne ölçüde yardımcı olabileceği veya performansı engelleyebileceği, plan türüne, worker sayısına ve sorgu süresine bağlıdır.

force_parallel_mode

type: enum default: off context: user values: [off, on, regress]
Paralel sorgu imkanlarını test amaçlarınız için performans katkısı olmasa dahi kullanmaya zorlar. force_parallel_mode için geçerli değerler; off (paralel modu, yalnızca performansı iyileştirmesi beklendiğinde kullanır), on (güvenli olduğu düşünülen tüm sorgular için paralel sorguyu zorlar) ve regress (aşağıda açıklanan ek davranışlar ile birlikte on gibidir).

on ayarı, herhangi bir sorgu planının üstüne bir Gather düğümü ekler. Böylece sorgu, bir paralel worker’ın içinde çalıştırılır. Bu seçenek ayarlandığında hatalar veya beklenmeyen sonuçlar ortaya çıktığında, sorgu tarafından kullanılan bazı işlevlerin PARALLEL UNSAFE veya PARALLEL RESTRICTED olarak işaretlenmesi gerekebilir.

regress ayarı, on ayarının yaptığı etkiler ile beraber otomatik regression testini kolaylaştırmayı amaçlayan bazı ek etkilere sahiptir. Normalde, paralel bir worker’dan gelen mesajlar bunu belirten bir bağlam satırı içerir, ancak regress ayarı bu satırı bastırır ve çıktı paralel olmayan yürütmeyle aynı olur. Ayrıca, bu ayar ile planlara eklenen Gather düğümleri EXPLAIN çıktısında gizlenir. Böylece çıktı, off durumunda elde edilecek olanla eşleşir.

plan_cache_mode

type: enum default: auto context: user values: [auto, force_generic_plan, force_custom_plan]
Prepared statement’lar custom ve generic planlar kullanılarak yürütülebilir. Her bir yürütme için custom planlar, kendine özgü parametre değerleri kümesi kullanılarak baştan yapılırken; generic planlar, parametre değerlerine dayanmaz ve yürütmelerde tekrar kullanılabilir. Bu sebeple, generic bir planın kullanılması planlama süresinden tasarruf sağlar. İdeal plan güçlü bir şekilde parametre değerlerine bağlıysa generic bir plan verimsiz olabilir. Bu seçenekler arasındaki tercih normalde otomatik olarak yapılır. plan_cache_mode ile geçersiz kılınabilir. Alabileceği değerler; auto (varsayılan), force_custom_plan ve force_generic_plan‘dır. Daha fazla bilgi için bkz. PREPARE.

Kaynak:

[1]. PostgreSQL Documentation

[2]. postgresqlco.nf