Thread

  1. Re: [HACKERS] database size

    Bruce Momjian <maillist@candle.pha.pa.us> — 1998-01-07T01:18:26Z

    > 
    > > I created a table with two columns of type int, and loaded about 300 K records
    > > in it. So, the total size of the table is approx. that of 600 K integers,
    > > roughly 2.4 MB.
    > > But, the file corresponding to the table in pgsql/data/base directory
    > > has a size of 19 MB. I was wondering if I have done something wrong in
    > > the installation or usage, or is it the normal behavior ?
    > 
    > 48 bytes + each row header (on my aix box..._your_ mileage may vary)
    >  8 bytes + two int fields @ 4 bytes each
    >  4 bytes + pointer on page to tuple
    > -------- =
    > 60 bytes per tuple
    > 
    > 8192 / 60 give 136 tuples per page.
    > 
    > 300000 / 136 ... round up ... need 2206 pages which gives us ...
    > 
    > 2206 * 8192 = 18,071,532
    > 
    > So 19 MB is about right.  And this is the best to be done, unless
    > you can make do with int2s which would optimally shrink the table
    > size to 16,834,560 bytes.  Any nulls in there might add a few bytes
    > per offending row too, but other than that, this should be considered
    > normal postgresql behavior.
    
    
    Nice math exercise.
    
    Does anyone want to tell me the row overhead on commercial databases?
    
    -- 
    Bruce Momjian
    maillist@candle.pha.pa.us