Popis protokolování před zápisem
Při provedení změn v databázi, například INSERTS nebo DELETES, se tyto změny nejprve zapíšou do protokolu a pak se zapíšou jenom do datových souborů na disku. Tato operace se nazývá protokol pro zápis předem, protože změny se zapisují do protokolu, než jsou potvrzeny do datových souborů. Pokud se jedná o problém, například ztrátu výkonu, protokol vždy uchovává nejnovější data a dá se použít k zajištění konzistentního stavu databáze.
Druhou výhodou je to, že zápisem změn do protokolu nejprve lze změny tabulek a indexů zapisovat v dávkách, nikoli jednotlivě. Tento proces snižuje počet zápisů na disk potřebných k udržování tabulek a indexů v aktualizovaném stavu. Zápisy do protokolu jsou rychlé, protože se provádějí postupně. Pomalejší zápisy do tabulek a indexů je možné bezpečně provádět v dávkách, protože všechna data je možné obnovit z protokolu. U úloh, které obvykle zahrnují mnoho malých aktualizací, se zlepší výkon.
Poznámka
V případě místních implementací PostgreSQL je soubor protokolu uložený v adresáři pg_wal. Azure Database for PostgreSQL neposkytuje přístup k systému souborů, takže si nemusíte dělat starosti s fyzickým úložištěm souboru protokolu.
Existuje několik parametrů serveru, které umožňují řídit, jak protokolování s předběžným zápisem funguje, a optimalizovat ho pro vaši úlohu:
- commit_delay – zpoždění mezi potvrzením transakce a vyprázdněním protokolu na disk.
- wal_buffers – počet stránkových vyrovnávacích pamětí ve sdílené paměti pro protokolování před zápisem (WAL).
- max_wal_size – maximální velikost, která umožňuje růst WAL před aktivací automatického kontrolního bodu.
- wal_writer_delay – časový interval mezi vyprázdněními WAL prováděným zapisovačem WAL.
- wal_compression – zda jsou komprimované plnostránkové zápisy do souboru WAL.
- wal_level – určuje, kolik informací je zapsáno do WAL. Povolené hodnoty jsou REPLIKA nebo LOGICKÉ.
Obnovení k určitému bodu v čase
Primárním účelem záznamu před zápisem (WAL) je zajistit konzistenci a odolnost databáze v případě havárie. Místní verze PostgreSQL umožňuje použití protokolu jako archivu, což umožňuje obnovení k určitému bodu v čase pomocí nastavení konfigurace archive_mode a archive_command.
Azure Database for PostgreSQL je spravovaná služba, která neumožňuje přístup k základnímu systému souborů. Zahrnuje však automatické úplné zálohování serveru včetně všech databází. Tato záloha umožňuje znovu vytvořit data k určitému bodu v čase. Zálohování se naplánuje automaticky a provádí se jednou denně. Pokud potřebujete provést obnovení, můžete obnovit až do počtu dnů, které jste zadali pro uchovávání záloh, až do maximálního počtu 35 dnů. Jak stanovit dobu uchovávání záloh:
- Na webu Azure Portal přejděte na flexibilní server Azure Database for PostgreSQL.
- V části Přehled vyberte konfiguraci.
- V části Zálohy vyhledejte dobu uchovávání záloh (ve dnech). Posuvník umožňuje vybrat počet dní, po které chcete zachovat zálohy.
- Vyberte Uložit, aby se změny zachovaly.