Re: WAL logging problem in 9.4.3?
Kyotaro HORIGUCHI <horiguchi.kyotaro@lab.ntt.co.jp>
I'd like to put a supplimentary explanation. At Tue, 11 Apr 2017 17:38:12 +0900 (Tokyo Standard Time), Kyotaro HORIGUCHI <horiguchi.kyotaro@lab.ntt.co.jp> wrote in <20170411.173812.133964522.horiguchi.kyotaro@lab.ntt.co.jp> > Sorry, what I have just sent was broken. > > At Tue, 11 Apr 2017 17:33:41 +0900 (Tokyo Standard Time), Kyotaro HORIGUCHI <horiguchi.kyotaro@lab.ntt.co.jp> wrote in <20170411.173341.257028732.horiguchi.kyotaro@lab.ntt.co.jp> > > At Tue, 11 Apr 2017 09:56:06 +0900 (Tokyo Standard Time), Kyotaro HORIGUCHI <horiguchi.kyotaro@lab.ntt.co.jp> wrote in <20170411.095606.245908357.horiguchi.kyotaro@lab.ntt.co.jp> > > > Hello, thank you for looking this. > > > > > > At Fri, 07 Apr 2017 20:38:35 -0400, Tom Lane <tgl@sss.pgh.pa.us> wrote in <27309.1491611915@sss.pgh.pa.us> > > > > Alvaro Herrera <alvherre@2ndquadrant.com> writes: > > > > > Interesting. I wonder if it's possible that a relcache invalidation > > > > > would cause these values to get lost for some reason, because that would > > > > > be dangerous. > > > > > > > > > I suppose the rationale is that this shouldn't happen because any > > > > > operation that does things this way must hold an exclusive lock on the > > > > > relation. But that doesn't guarantee that the relcache entry is > > > > > completely stable, > > > > > > > > It ABSOLUTELY is not safe. Relcache flushes can happen regardless of > > > > how strong a lock you hold. > > > > > > > > regards, tom lane > > > > > > Ugh. Yes, relcache invalidation happens anytime and it resets the The pending locations are not stored in relcache hash so the problem here is not invalidation but that Relation objects are created as necessary, anywhere. Even if no invalidation happens, the same thing will happen in a bit different form. > > > added values. pg_stat_info deceived me that it can store > > > transient values. But I came up with another thought. > > > > > > The reason I proposed it was I thought that hash_search for every > > > buffer is not good. Instead, like pg_stat_info, we can link the > > > > buffer => buffer modification > > > > > pending-sync hash entry to Relation. This greately reduces the > > > frequency of hash-searching. > > > > > > I'll post new patch in this way soon. > > > > Here it is. > > It contained tariling space and missing test script. This is the > correct patch. > > > - Relation has new members no_pending_sync and pending_sync that > > works as instant cache of an entry in pendingSync hash. > > > > - Commit-time synchronizing is restored as Michael's patch. > > > > - If relfilenode is replaced, pending_sync for the old node is > > removed. Anyway this is ignored on abort and meaningless on > > commit. > > > > - TAP test is renamed to 012 since some new files have been added. > > > > Accessing pending sync hash occured on every calling of > > HeapNeedsWAL() (per insertion/update/freeze of a tuple) if any of > > accessing relations has pending sync. Almost of them are > > eliminated as the result. -- Kyotaro Horiguchi NTT Open Source Software Center
Commits
-
Add perl2host call missing from a new test file.
- 70de4e950c3b 13.0 landed
-
Skip WAL for new relfilenodes, under wal_level=minimal.
- c6b92041d385 13.0 landed
- 9db4b9da2801 9.5.22 landed
- a653bd8aa76e 9.6.18 landed
- 9d6215205e5a 10.13 landed
- 03b89f1949a9 11.8 landed
- e4b0a02ef8c8 12.3 landed
- cb2fd7eac285 13.0 landed
-
Revert "Skip WAL for new relfilenodes, under wal_level=minimal."
- b31e96ba420f 9.5.22 landed
- 348f15e22e94 9.6.18 landed
- 0a6c9c66da26 10.13 landed
- 63631ee64f84 12.3 landed
- 2fbdebc248ec 11.8 landed
- de9396326edc 13.0 landed
-
Back-patch log_newpage_range().
- e0dd086414f7 9.5.22 landed
- 14d2bb4941e6 9.6.18 landed
- 43434ed94d80 10.13 landed
- ae86e46c3b7b 11.8 landed
-
During heap rebuild, lock any TOAST index until end of transaction.
- a8f754aea014 9.6.18 landed
- 978da2a95597 9.5.22 landed
- 78a34c68920a 10.13 landed
- 88b3a6cd2623 12.3 landed
- 4433c6e8c0a5 11.8 landed
- e629a01f6973 13.0 landed
-
In log_newpage_range(), heed forkNum and page_std arguments.
- a5abec521c5d 12.3 landed
- d3e572855be1 13.0 landed
-
Back-patch src/test/recovery and PostgresNode from 9.6 to 9.5.
- 12034da6cc39 9.5.22 landed
-
Reduce pg_ctl's reaction time when waiting for postmaster start/stop.
- c61559ec3a41 10.0 cited
-
Accelerate end-of-transaction dropping of relations
- 279628a0a7cf 9.3.0 cited
-
Redesign the planner's handling of index-descent cost estimation.
- 31f38f28b00c 9.3.0 cited
-
Make TRUNCATE do truncate-in-place when processing a relation that was created
- cab9a0656c36 9.0.0 cited