sql >> Database >  >> RDS >> PostgreSQL

Updates ter plaatse met PostgreSQL

Alleen velden die in-line zijn opgeslagen, hoeven te worden gekopieerd. Voor velden die out-of-line zijn opgeslagen in TOAST-tabellen, wordt alleen de verwijzing naar de TOAST-invoer gekopieerd.

Of een veld out-of-line wordt opgeslagen, hangt af van de grootte van de waarde in het veld en van het gegevenstype van het veld.

Als de tuples groot zijn maar maar een paar velden hebben - zoals

some_id integer,
frequently_updated integer,
charblob text

dan heeft het niet veel zin om iets te veranderen omdat updates van frequently_updated zal de gegevens over het algemeen niet herschrijven in charblob , tenminste als het groot genoeg is dat het de moeite waard is om er voor te zorgen.

OTOH, als je een tabel hebt met veel velden, zul je bij elke update veel meer moeten herschrijven.

HOT zal u slechts in beperkte mate helpen omdat een HOT-update alleen kan plaatsvinden als er geen bijgewerkte kolom(men) deel uitmaken van een index en er is voldoende vrije ruimte op dezelfde databasepagina. Voor brede rijen passen er niet veel exemplaren op een pagina, zelfs niet met TOAST, dus HEET heeft een beperkt voordeel.

Het kan de moeite waard zijn om dergelijke velden op te splitsen in aparte tabellen als ze echt vaak worden bijgewerkt, maar de rest van de tabel heeft brede rijen die niet veel veranderen.




  1. PHP 7.2.2 + mysql 8.0 PDO geeft:authenticatiemethode onbekend bij de client [caching_sha2_password]

  2. Wat is de meest efficiënte manier om te controleren of een record in Oracle bestaat?

  3. Impact op de prestaties van verschillende technieken voor foutafhandeling

  4. hoe gegevens te structureren voor doorzoekbaarheid