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

Aktualizace na místě s PostgreSQL

Je třeba zkopírovat pouze pole uložená v řádku. U polí uložených mimo řádek v tabulkách TOAST se zkopíruje pouze odkaz na položku TOAST.

Zda je pole uloženo mimo řádek, závisí na velikosti hodnoty v poli a na datovém typu pole.

Pokud jsou n-tice velké, ale mají jen několik polí – jako

some_id integer,
frequently_updated integer,
charblob text

pak nemá smysl cokoliv měnit, protože aktualizace frequently_updated obecně nepřepíše data v charblob , alespoň pokud je dostatečně velký, aby stál za péči.

OTOH, pokud máte tabulku se spoustou polí, budete s každou aktualizací přepisovat mnohem více.

HOT vám pomůže pouze v omezené míře, protože k aktualizaci HOT může dojít pouze v případě, že součástí indexu nejsou žádné aktualizované sloupce a na stejné stránce databáze je dostatek volného místa. U širokých řádků se na stránku nevejde mnoho kopií ani s TOASTem, takže HOT bude mít jen omezený přínos.

Může být užitečné oddělit taková pole do samostatných tabulek, pokud jsou opravdu často aktualizovány, ale zbytek tabulky má široké řádky, které se příliš nemění.




  1. SSIS - hodnotu nelze převést z důvodu možné ztráty dat

  2. Jak mohu dotazovat řetězec z JSON na základě jiného řetězce v rámci JSON v PostgreSQL?

  3. Jak získat rozdíl v letech ze dvou různých dat?

  4. Rozdíl mezi dvěma neuspořádanými odstraněnými seznamy (Oracle)