sql >> Databáze >  >> RDS >> PostgreSQL

Jak PostgreSQL ukládá příkazy a data do mezipaměti?

Obecně platí, že ve sdíleném prostoru vyrovnávací paměti bude ukládán pouze obsah souborů tabulek a indexů.

Plány dotazů se za určitých okolností ukládají do mezipaměti. Nejlepším způsobem, jak to zajistit, je PŘÍPRAVU dotazu jednou a poté jej pokaždé PROVÉST.

Výsledky dotazu se automaticky neukládají do mezipaměti. Pokud znovu spustíte stejný dotaz – i když je písmenko po písmenu identický a v DB nebyly provedeny žádné aktualizace – stále se provede celý plán. Využije samozřejmě všechna data tabulky/indexu, která jsou již ve sdílené mezipaměti; takže nebude nutně muset znovu číst všechna data z disku.

Aktualizace ukládání plánu do mezipaměti

Ukládání plánu do mezipaměti se obvykle provádí na relaci. To znamená, že pouze připojení, které vytváří plán, může používat verzi uloženou v mezipaměti. Ostatní připojení musí vytvářet a používat své vlastní verze v mezipaměti. Ve skutečnosti to není problém s výkonem, protože úspora, kterou získáte opětovným použitím plánu, je téměř vždy minimální ve srovnání s náklady na připojení. (Pokud vaše dotazy nejsou skutečně komplikované.)

dělá cache, pokud používáte PREPARE:http://www.postgresql.org /docs/current/static/sql-prepare.html

dělá cache, když je dotaz ve funkci PL/plSQL:http://www.postgresql.org/docs/current/static/plpgsql-implementation.html#PLPGSQL-PLAN-CACHING

Není cache ad-hoc dotazy zadané v psql.

Doufejme, že někdo jiný může rozvést další případy ukládání plánu dotazů do mezipaměti.




  1. Jak převedu php webovou aplikaci na desktopovou aplikaci a zachovám databázi

  2. Jak se připojím k instanci dockeru Oracle

  3. Selektivní import z CSV do MySQL

  4. Dotaz MySQL pro vrácení řádků, které obsahují mezery