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

Velikost tabulky s rozložením stránky

Váš výpočet je v několika bodech mimo.

  • Velikost úložiště varchar , text (a character !) je cituje manuál ):

Tučné zdůraznění dolu na otázku v komentáři.

  • HeapTupleHeader zabírá 23 bajtů . Ale každá n-tice ("položka" - řádek nebo položka rejstříku) má identifikátor položky na začátku datové stránky k němu, celkem na zmíněných 27 bytech. Rozdíl je relevantní, protože skutečná uživatelská data začínají na násobku MAXALIGN od začátku každé položky a identifikátor položky se do tohoto posunu nezapočítává – stejně jako skutečná „velikost n-tice“.

  • 1 byte výplně kvůli zarovnání dat (násobek 8), které se v tomto případě používá pro bitmapu NULL.

  • Žádné odsazení pro typ varchar (ale další byte zmíněný výše)

Takže skutečný výpočet (se všemi sloupci vyplněnými na maximum) je:

    23    -- heaptupleheader
 +   1    -- NULL bitmap (or padding if row has NO null values)
 +   9    -- columns ...
 + 101 
 +   2 
 + 101 
 +   4 
 +  11
-------------
   252 bytes

 +   4    -- item identifier at page start

Související:

Mnoho dalších najdete v seznamu odkazů napravo od těchto odpovědí.




  1. Použití meteor.js na straně php serveru

  2. Filtrované indexy a zahrnuté sloupce

  3. Jak vygenerovat 52 týdnů od aktuálního data pomocí Postgresql

  4. Odkaz na parametr psql uvnitř anonymního bloku PL/pgSQL