On Thu, 2 Nov 2023 at 20:32, Tomas Vondra <tomas.von...@enterprisedb.com> wrote: > On 11/2/23 20:09, stepan rutz wrote: > > db1=# explain (analyze, serialize) select * from test; > > QUERY PLAN > > --------------------------------------------------------------------------------------------------- > > Seq Scan on test (cost=0.00..22.00 rows=1200 width=40) (actual > > time=0.023..0.027 rows=1 loops=1) > > Planning Time: 0.077 ms > > Execution Time: 303.281 ms > > Serialized Bytes: 78888953 Bytes. Mode Text. Bandwidth 248.068 MB/sec > [...] > BTW if you really want to print amount of memory, maybe print it in > kilobytes, like every other place in explain.c?
Isn't node width in bytes, or is it an opaque value not to be interpreted by users? I've never really investigated that part of Postgres' explain output... > Also, explain generally > prints stuff in "key: value" style (in text format). That'd be key: metrickey=metricvalue for expanded values like those in plan nodes and the buffer usage, no? > > Serialized Bytes: 78888953 Bytes. Mode Text. Bandwidth 248.068 MB/sec I was thinking more along the lines of something like this: [...] Execution Time: xxx ms Serialization: time=yyy.yyy (in ms) size=yyy (in KiB, or B) mode=text (or binary) This is significantly different from your output, as it doesn't hide the measured time behind a lossy calculation of bandwidth, but gives the measured data to the user; allowing them to derive their own precise bandwidth if they're so inclined. Kind regards, Matthias van de Meent Neon (https://neon.tech)