| From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
|---|---|
| To: | Alvaro Herrera <alvherre(at)commandprompt(dot)com> |
| Cc: | Simon Riggs <simon(at)2ndquadrant(dot)com>, Heikki Linnakangas <heikki(at)enterprisedb(dot)com>, pgsql-hackers(at)postgresql(dot)org, pgsql-patches(at)postgresql(dot)org |
| Subject: | Re: [HACKERS] WAL logging freezing |
| Date: | 2006-10-30 22:10:08 |
| Message-ID: | 20593.1162246208@sss.pgh.pa.us |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-hackers pgsql-patches |
Alvaro Herrera <alvherre(at)commandprompt(dot)com> writes:
> In fact I don't understand what's the point about multiple databases vs.
> a single database. Surely a checkpoint would flush all buffers in all
> databases, no?
Yeah --- all the ones that are dirty *now*. Consider the case where you
vacuum DB X, update its datvacuumxid, and don't checkpoint because the
global min didn't advance. Now you crash, possibly leaving some hint
bits unwritten; but the datvacuumxid change did make it to disk. After
restart, vacuum DB Y, update its datvacuumxid, and find that the global
min *did* advance. You checkpoint, and that guarantees that DB Y is
clean for the clog truncation. But DB X isn't.
The 8.2 changes have created the equivalent risk at the level of each
individual table. We can't write a vacuumxid change unless we are sure
that the hint-bit changes it promises are actually down to disk.
regards, tom lane
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Simon Riggs | 2006-10-30 22:16:04 | --single-transaction doc clarification |
| Previous Message | Tom Lane | 2006-10-30 21:58:14 | Re: [HACKERS] WAL logging freezing |
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Simon Riggs | 2006-10-30 22:16:04 | --single-transaction doc clarification |
| Previous Message | Tom Lane | 2006-10-30 21:58:14 | Re: [HACKERS] WAL logging freezing |