Hey, I'm using postgresql 9.6.11. I wanted to ask something about the functions I mentioned in the title : I created the next table : postgres=# \d students; Table "public. students " Column | Type | Modifiers ----------+---------+----------- id| integer | name| text | age| integer | data | jsonb |
I inserted one row. When I query the table`s size with pg_total_relation_size I see that the data occupies 2 pages : postgres=# select pg_total_relation_size(' students '); pg_total_relation_size ------------------------ 16384 (1 row) postgres=# select pg_relation_size(' students '); pg_relation_size ------------------ 8192 (1 row) When I used pgstattuple : postgres=# select * from pgstattuple('pg_toast.pg_toast_1187222'); table_len | tuple_count | tuple_len | tuple_percent | dead_tuple_count | dead_tuple_len | dead_tuple_percent | free_space | free_percent -----------+-------------+-----------+---------------+------------------+----------------+--------------------+------------+-------------- 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 (1 row) postgres=# select * from pgstattuple('students'); table_len | tuple_count | tuple_len | tuple_percent | dead_tuple_count | dead_tuple_len | dead_tuple_percent | free_space | free_percent -----------+-------------+-----------+---------------+------------------+----------------+--------------------+------------+-------------- 8192 | 1 | 1221 | 14.9 | 0 | 0 | 0 | 6936 | 84.67 (1 row) Which means, the toasted table is empty and you can see that the row I inserted should occupy only one page(8K in my system). Then, why the pg_total_relation_size shows another page ?(16KB in total)