Обсуждение: Calculation of Database Size in postgres
Hi all, In postgres for knowing the size of a database we generally use the system administration function "pg_database_size('database_name')". I am curious to know how does this calculate internally from the pages(free pages/fragmented pages/full pages) stored in the disk? Thanks in advance! Regards, Pavan -- Sent from: http://www.postgresql-archive.org/PostgreSQL-admin-f2076596.html
pavan95 wrote: > In postgres for knowing the size of a database we generally use the system > administration function "pg_database_size('database_name')". > > I am curious to know how does this calculate internally from the pages(free > pages/fragmented pages/full pages) stored in the disk? It just adds up the sizes of the files that make up the database. Yours, Laurenz Albe
Hi Laurenz, Do you know how does it calculate internally using what functions or what system catalogs or whatever? Regards, Pavan -- Sent from: http://www.postgresql-archive.org/PostgreSQL-admin-f2076596.html
pavan95 wrote: > Do you know how does it calculate internally using what functions or what > system catalogs or whatever? The functions are in backend/utils/adt/dbsize.c, note in particular db_dir_size which walks through a directory and adds up the sizes of all files therein. Yours, Laurenz Albe
Ok, In that case some data files(which in turn consists pages) might be partially filled. In that case the size of the database with data will be different to the size of the database calculated with respect to files size on disk. So how to calculate the size of only data and not the free space in the database? Regards, Pavan -- Sent from: http://www.postgresql-archive.org/PostgreSQL-admin-f2076596.html
Greetings, * pavan95 (pavan.postgresdba@gmail.com) wrote: > Ok, In that case some data files(which in turn consists pages) might be > partially filled. > > In that case the size of the database with data will be different to the > size of the database calculated with respect to files size on disk. > > So how to calculate the size of only data and not the free space in the > database? You can look at the free space map using the pg_freespacemap extension, or you can use the pgstattuple extension to look at free space in both the heap and the indexes. Note that pgstattuple will scan the table, while the freespacemap extension just looks at the FSM. Thanks! Stephen