Konfigurační soubor postgresql.conf

Umístění
Umístění tohoto konfiguračního souboru na vašem systému zjistíte dotazem do pohledu (view) pg_settings.

SELECT setting FROM pg_settings WHERE name = 'config_file';

Popis
Soubor postgresql.conf je čten při startu serveru. Některé změny v nastavení v tomto souboru vyžadují reload, nekteré restart serveru. To zda je potřeba reload nebo restart poznáte podle sloupce context. Hodnota user znamená, že stačí reload. Pokud je hodnota postmaster, je třeba pro změny provést restart.
Sloupec unit určuje měrnou jednotku pro sloupce setting (současná hodnoty), boot_val (výchozí hodnoty) a reset_val (nová hodnota). Pokud se hodnoty ve sloupcích setting, boot_val a reset_val liší, je potřeba reload nebo reset.

SELECT name, short_desc, context, unit, setting, boot_val, reset_val 
FROM pg_settings 
WHERE name IN ('max_connections', 'shared_buffers', 'effective_cache_size', 'work_mem', 'maintenance_work_mem');

         name         |                           short_desc                            |  context   | unit | setting | boot_val | reset_val
----------------------+-----------------------------------------------------------------+------------+------+---------+----------+-----------
 effective_cache_size | Sets the planner's assumption about the size of the disk cache. | user       | 8kB  | 524288  | 524288   | 524288
 maintenance_work_mem | Sets the maximum memory to be used for maintenance operations.  | user       | kB   | 65536   | 65536    | 65536
 max_connections      | Sets the maximum number of concurrent connections.              | postmaster |      | 100     | 100      | 100
 shared_buffers       | Sets the number of shared memory buffers used by the server.    | postmaster | 8kB  | 16384   | 1024     | 16384
 work_mem             | Sets the maximum memory to be used for query workspaces.        | user       | kB   | 4096    | 4096     | 4096

Důležité
Tomto soubor obsahuje velké množství nastavení. Nejdůležitější pro optimalizaci výkonu jsou:

  • shared_buffers: Nastavuje velikost paměti pro cachování. Určuje paměť sdílenou všemi připojeními (connections) pro uchovávání nedávno dotazovaných stránek (paměť pro kešování dat). Defaultní nastavení (v PostgreSQL 9.2 je to 32MB, v PostgreSQL 9.4 je to 128MB) je pro moderní hardware docela nízké. Doporučuje se tento parametr nastavit na velikost 20% – 25% dostupné RAM na systému.
  • effective_cache_size: Toto nastavení souvisí s optimalizací dotazů. Hodnota by měla být nastavena na velikost předpokládané paměti určené pro kešování. Tato hodnota je používána plánovačem dotazů (query planner) ke zjištění, zda se zvažovaný exekuční plán vleze do paměti. V případě, že je hodnota příliš nízká, může se optimalizátor dotazů rozhodnout nepoužívat v dotazech indexy, což z vysokou pravděpodobností zpomalí rychlost provádění dotazů. Doporučená velikost je až 50% kapacity RAM na systému (podku máte na serveru pouze postgres, může být i vyšší).
  • work_mem: Velikost paměti pro zpracování některých operací (např. řazení, třídění, slučování). Určuje velikost pro jednu operaci. Pokud máme nastaveno x připojení (connections) a každé z těch připojení může zadat složitý SQL příkaz, který bude používat více těchto operací, je třeba si spočítat kolik paměti můžeme přidělit jedné jediné operaci tak, abychom nepřekročili fyzické možnosti serveru. Jinak by se mohlo stát, že systém začne swapovat což by výkonnostně znamenalo výrazné zpomalení. Pokud máte hodně uživatelů, kteří provádí jednoduché dotazy, je vhodná nižší velikost.
  • maintenance_work_mem: Paměť určená pro ‚úklidové práce‘ jako např. VACUUM (odstranění neplatných záznamů), CREATE INDEX, ALTER TABLE ADD FOREIGN KEY. Defaultní hodnota je 64 MB. Hodnota by neměla být nastavena výše než 1 GB.

Další
Aktuální nastavení, kromě výše uvedeného dotazu do pg_settings, můžete získát dotazem SHOW ALL:

SHOW ALL;
               name                 |                 setting                  |                      description
------------------------------------+------------------------------------------+------------------------------------------------------
...
session_replication_role            | origin                                   | Sets the session's behavior for triggers and rewrite rules.
shared_buffers                      | 128MB                                    | Sets the number of shared memory buffers used by the server.
shared_preload_libraries            |                                          | Lists shared libraries to preload into server.
sql_inheritance                     | on                                       | Causes subtables to be included by default in various commands.
...

Nebo můžete použít SHOW s názvem hodnoty (SHOW maintenance_work_mem, SHOW work_mem, …).

SHOW work_mem;
 work_mem
----------
 4MB
(1 row)

SHOW shared_buffers;
 shared_buffers
----------------
 128MB

Zdroje:
postgresql.org/docs/9.6/static/runtime-config-resource.html
wiki.postgresql.org/wiki/Tuning_Your_PostgreSQL_Server

Napsat komentář