Tom Lane wrote: > Josh Berkus <josh@agliodbs.com> writes: > >> Uh, what exactly did you cut out? I suggested dropping the dumping of > >> full page images, but not removing CRCs altogether ... > > > Attached is the patch I used. > > OK, thanks for the clarification. So it does seem that dumping full > page images is a pretty big hit these days. (In defense of the original > idea, I believe it was not such a hit at the time --- but as we continue > to improve performance, things that weren't originally at the top of the > profile become significant.) > > It seems like we have two basic alternatives: > > 1. Offer a GUC to turn off full-page-image dumping, which you'd use only > if you really trust your hardware :-( > > 2. Think of a better defense against partial-page writes. > > I like #2, or would if I could think of a better defense. Ideas anyone?
I have an idea! Currently we write the backup pages (copies of pages modified since the last checkpoint) when we write the WAL changes as part of the commit. See the XLogCheckBuffer() call in XLogInsert(). However, it seems that this is not the most efficient time to be writing the backup pages. It would be more efficient to write these just before the page is written to disk (not when it is modified in the buffer cache). This would allow the background writer to be writing most of the backup pages, rather than the transaction committer. A further optimization would be to write the backup pages to the same 8k file over and over again rather than adding I/O to pg_xlog WAL files. Comments? -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 359-1001 + If your life is a hard drive, | 13 Roberts Road + Christ can be your backup. | Newtown Square, Pennsylvania 19073 ---------------------------(end of broadcast)--------------------------- TIP 9: In versions below 8.0, the planner will ignore your desire to choose an index scan if your joining column's datatypes do not match