PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Czy Postgres przepisuje cały wiersz podczas aktualizacji?

Wybieranie c) z twoich pytań:

Jak @Craig już wyjaśnił , kolumny, które są "zdolne do TOAST" i przekraczają określony próg, są przechowywane poza linią w dedykowanej tabeli TOAST na tabelę (oddzielne "widły relacji", oddzielne pliki na dysku). A więc 5 MB bytea kolumna pozostanie w większości nietknięta w aktualizacji, jeśli sama kolumna nie zostanie zmieniona. Instrukcja:

Pogrubiony nacisk na kopalnię.
Wiersz w głównym rozwidleniu relacji jest nadal kopiowany, a martwy wiersz pozostaje po aktualizacji (niezależnie od tego, czy jakiekolwiek wartości faktycznie się zmieniły). W przypadku dużych rozmiarów wierszy może się opłacać następujące rozwiązanie:

Utwórz małą oddzielną tabelę 1:1 dla często zmienianych flag. Tylko klucz podstawowy (=klucz obcy w tym samym czasie) i często zmieniane flagi. Spowoduje to, że aktualizacje będą dużo szybsze i oszczędzą miejsce na dysku — dla początkowego dodatkowego obciążenia i pewnych kosztów dla zapytań, które muszą łączyć obie tabele (inne zapytania faktycznie stają się szybsze). Więcej informacji o wymaganiach dotyczących miejsca na dysku dla wierszy tabeli:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Utwórz niezmienny klon concat_ws

  2. Jak znaleźć ostatnią aktualizację bazy danych PostgreSQL?

  3. Wskazówka HINT_PASS_DISTINCT_THROUGH zmniejsza liczbę jednostek zwracanych na stronę dla żądania PageRequest poniżej skonfigurowanego rozmiaru strony (PostgreSQL)

  4. Jak uzyskać pierwszy i ostatni rekord z zapytania sql?

  5. Instalacja PostgreSQL na Ubuntu dla Ruby on Rails