sql >> Databasteknik >  >> RDS >> PostgreSQL

Tabellstorlek med sidlayout

Din beräkning är avstängd vid flera punkter.

  • Lagringsstorlek för varchar , text (och character !) är, citerar manualen ):

Djärv betoning min för att ta upp frågan i kommentaren.

  • HeapTupleHeader upptar 23 byte . Men varje tuppel ("objekt" - rad eller indexpost) har en objektidentifierare i början av datasidan till den, totalt på de nämnda 27 byten. Distinktionen är relevant eftersom faktisk användardata börjar med en multipel av MAXALIGN från början av varje artikel, och artikelidentifieraren räknas inte mot denna förskjutning - liksom den faktiska "tuppelstorleken".

  • 1 byte utfyllnad på grund av datajustering (multipel av 8), som används för NULL-bitmappen i det här fallet.

  • Ingen utfyllnad för typ varchar (men den extra byten som nämns ovan)

Så den faktiska beräkningen (med alla kolumner fyllda till max) är:

    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

Relaterat:

Du hittar många fler i länklistan till höger om dessa svar.




  1. Hur Cosh() fungerar i PostgreSQL

  2. Anslut till en heroku-databas med pgadmin

  3. SQL Server datumformat funktion

  4. Vad kräver detta JavaScript?