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

Czy ustawienie NOT NULL w kolumnie w postgresql zwiększa wydajność?

Ustawienie NOT NULL nie ma wpływu per se na wydajność. Kilka cykli do sprawdzenia - nieistotne.

Ale możesz poprawić wydajność, używając wartości NULL zamiast wartości fikcyjnych. W zależności od typów danych możesz oszczędzić dużo miejsca na dysku i pamięci RAM , przyspieszając w ten sposób .. wszystko.

Pusta bitmapa jest przydzielana tylko wtedy, gdy w wierszu znajdują się jakiekolwiek wartości NULL . To jeden bit za każdy kolumna w wierszu (NULL lub nie). W przypadku tabel do 8 kolumn bitmapa zerowa jest całkowicie darmowa, wykorzystując zapasowy bajt między nagłówkiem krotki a danymi wiersza. Następnie przestrzeń jest przydzielana w wielokrotnościach MAXALIGN (zazwyczaj 8 bajtów, obejmujących 64 kolumny). Różnica ginie w wyściółce. Więc płacisz pełną (niską!) cenę za pierwszą wartość NULL w każdym wierszu . Dodatkowe wartości NULL mogą tylko zaoszczędzić miejsce.

Minimalne wymaganie pamięci dla każdej wartości innej niż null to 1 bajt (boolean , "char" , ...) lub zazwyczaj dużo więcej, plus (ewentualnie) wyściółka do wyrównania. Przeczytaj o typach danych lub sprawdź krwawe szczegóły w tabeli systemowej pg_type .

Więcej o pamięci zerowej:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak ograniczyć wiersze w PostgreSQL SELECT

  2. Używasz funkcji Levenshteina na każdym elemencie w tsvectorze?

  3. Tablica ciągów Ruby / Rails do wstawienia PostgreSQL

  4. Jak zaszyfrować kolumnę w Postgresie za pomocą Hibernate @ColumnTransformer

  5. Alternatywa w przypadku wprowadzenia klauzuli IN DUŻO wartości (postgreSQL)