Обсуждение: pg_stat_statements, write activity

Поиск
Список
Период
Сортировка

pg_stat_statements, write activity

От
Scott Ribe
Дата:
I would guess that shared_blks_dirtied in pg_stat_statements is basically the count of blocks which will be logged into
WALand written back during checkpoints. So then what is shared_blks_written? Or do I misunderstand
shared_blks_dirtied???

--
Scott Ribe
scott_ribe@elevated-dev.com
https://www.linkedin.com/in/scottribe/






Re: pg_stat_statements, write activity

От
Achilleas Mantzios
Дата:
On 16/5/25 20:10, Scott Ribe wrote:

> I would guess that shared_blks_dirtied in pg_stat_statements is basically the count of blocks which will be logged
intoWAL and written back during checkpoints. So then what is shared_blks_written? Or do I misunderstand
shared_blks_dirtied???
My understanding is that dirtied will be eventually written, via 
checkpoint or bg writer, so it's a matter of timing.
>
> --
> Scott Ribe
> scott_ribe@elevated-dev.com
> https://www.linkedin.com/in/scottribe/
>
>
>
>
>



Re: pg_stat_statements, write activity

От
Laurenz Albe
Дата:
On Fri, 2025-05-16 at 11:10 -0600, Scott Ribe wrote:
> I would guess that shared_blks_dirtied in pg_stat_statements is basically the
> count of blocks which will be logged into WAL and written back during checkpoints.
> So then what is shared_blks_written? Or do I misunderstand shared_blks_dirtied???

The statistics track how many blocks were dirtied or written by the backend process
that performed the SQL statement.  Typically, the backend only dirties the blocks,
but doesn't write them to disk itself.  This is done by the checkpointer or the
background writer later on.

Sometimes, a backend writes a block to disk itself.  This might happen if a lot
of cache pressure, but usually it happens when the table is extended with new
blocks.

Yours,
Laurenz Albe



Re: pg_stat_statements, write activity

От
Scott Ribe
Дата:
> On May 16, 2025, at 1:37 PM, Laurenz Albe <laurenz.albe@cybertec.at> wrote:
>
> Sometimes, a backend writes a block to disk itself.  This might happen if a lot
> of cache pressure, but usually it happens when the table is extended with new
> blocks.

Ah, that's the piece I was missing!

Do the written blocks get counted as dirty first, or only as written?


Re: pg_stat_statements, write activity

От
Laurenz Albe
Дата:
On Sat, 2025-05-17 at 08:50 -0600, Scott Ribe wrote:
> > On May 16, 2025, at 1:37 PM, Laurenz Albe <laurenz.albe@cybertec.at> wrote:
> >
> > Sometimes, a backend writes a block to disk itself.  This might happen if a lot
> > of cache pressure, but usually it happens when the table is extended with new
> > blocks.
>
> Ah, that's the piece I was missing!
>
> Do the written blocks get counted as dirty first, or only as written?

They will certainly be dirty as well.  You can use simple experiments to answer
questions like this:

CREATE TABLE new(id integer);

EXPLAIN (ANALYZE, BUFFERS, COSTS OFF, SUMMARY OFF) INSERT INTO new VALUES (42);

                         QUERY PLAN
════════════════════════════════════════════════════════════
 Insert on new (actual time=0.165..0.166 rows=0.00 loops=1)
   Buffers: shared dirtied=1 written=1
   ->  Result (actual time=0.002..0.003 rows=1.00 loops=1)

Yours,
Laurenz Albe

Re: pg_stat_statements, write activity

От
Scott Ribe
Дата:
ooh yeah, I had forgotten those relatively new additions to explain...