Hello, try pgstattuple() and pgstatindex() , I think you will figure it out.
Steven 2017-04-05 16:56 GMT+08:00 Guillaume Lelarge <guilla...@lelarge.info>: > Hi, > > 2017-04-05 9:44 GMT+02:00 Günce Kaya <guncekay...@gmail.com>: > >> Hi all, >> >> I have some questions about calculating table and index size. >> >> I have a dummy table which has an integer column and its index. The table >> has 1400000 rows and all of rows are same thats value is 20000000. Table >> size is 50MB and index size is 31MB. Why there is too much size difference >> between table and its index? what happen on data files when we add index? >> >> > You have metadata informations in the table datafiles that you don't have > on the index datafiles. For example, all the system columns for each line. > > >> Second question is that after created table, table size was 0 byte. I >> inserted a row as 120 then table size was 8192 byte. I inserted five times >> same value to the table and table size is still 8192 bytes. Table size >> changed after inserted lots of rows. Table size was stabile till first few >> hundred rows. why table size didn't change when I inserted lots of rows? >> >> > PostgreSQL works with 8KB blocks. When you insert a line, it puts it on a > block, but this block may contain many lines. So your next new lines still > fit in the first block... until it doesn't, and you'll see a new block > coming, making your table datafile grows to 16KB. And so on and so on. > > > -- > Guillaume. > http://blog.guillaume.lelarge.info > http://www.dalibo.com >