I'm facing a hard time trying to figure it out some performance problems in my database. I'm using a bunch of resources online to learn what to monitor and how to interpret that information.
From the above, I'm unable to find a clear explanation of what is the difference between pg_stat_database.tup_returned
and pg_stat_database.tup_fetched
.
In pgAdmin4, there is a beautiful chart called "Tuples out" where these two concepts are contrasted, but I don't know how to interpret the info. In the official documentation only says that:
tup_returned
: Number of rows returned by queries in this databasetup_fetched
: Number of rows fetched by queries in this database
What exactly does "fetched" and "returned" mean?
I'm using postgresql 10.
-
In the official documentation, section Table 28.11. pg_stat_database ViewRogelio Delgado– Rogelio Delgado2018年10月02日 05:29:04 +00:00Commented Oct 2, 2018 at 5:29
1 Answer 1
If you do select count(*) from million_row_table
, one million row wills be returned, but only one row will be fetched.
I can't see I've ever found these fields useful for diagnosing performance problems. Find your slow query and do an EXPLAIN (ANALYZE, BUFFERS)
of it.
-
3Thanks, that makes sense. It's funny that the documentation doesn't explain that clearly. At least I can't find it.Rogelio Delgado– Rogelio Delgado2018年10月02日 05:31:54 +00:00Commented Oct 2, 2018 at 5:31
-
2If there's an index for the count, does PG still report millions of rows returned or not?collimarco– collimarco2020年02月25日 18:34:12 +00:00Commented Feb 25, 2020 at 18:34
-
In my experience, its the opposite of this. returned = search for on disk, fetched = returned to user. In our database, our returned is 3 orders of magnitude higher than fetched, presumably because our SQL is doing a lot of full table scans. This post: stackoverflow.com/questions/71272264/… says one is sequential scans and one it bitmap scans.John Little– John Little2025年01月23日 17:28:01 +00:00Commented Jan 23 at 17:28