Re: pgsql: snapshot scalability: cache snapshots using a xact completion co
От | Michael Paquier |
---|---|
Тема | Re: pgsql: snapshot scalability: cache snapshots using a xact completion co |
Дата | |
Msg-id | 20200818045246.GC3813@paquier.xyz обсуждение исходный текст |
Ответ на | pgsql: snapshot scalability: cache snapshots using a xact completion co (Andres Freund <andres@anarazel.de>) |
Ответы |
Re: pgsql: snapshot scalability: cache snapshots using a xact completion co
|
Список | pgsql-committers |
On Tue, Aug 18, 2020 at 04:30:21AM +0000, Andres Freund wrote: > snapshot scalability: cache snapshots using a xact completion counter. > > Previous commits made it faster/more scalable to compute snapshots. But not > building a snapshot is still faster. Now that GetSnapshotData() does not > maintain RecentGlobal* anymore, that is actually not too hard: > > This commit introduces xactCompletionCount, which tracks the number of > top-level transactions with xids (i.e. which may have modified the database) > that completed in some form since the start of the server. > > We can avoid rebuilding the snapshot's contents whenever the current > xactCompletionCount is the same as it was when the snapshot was > originally built. Currently this check happens while holding > ProcArrayLock. While it's likely possible to perform the check without > acquiring ProcArrayLock, it seems better to do that separately / > later, some careful analysis is required. Even with the lock this is a > significant win on its own. > > On a smaller two socket machine this gains another ~1.03x, on a larger > machine the effect is roughly double (earlier patch version tested > though). If we were able to safely avoid the lock there'd be another > significant gain on top of that. spurfowl and more animals are telling us that this commit has broken 2PC: https://buildfarm.postgresql.org/cgi-bin/show_log.pl?nm=spurfowl&dt=2020-08-18%2004%3A31%3A11 -- Michael
Вложения
В списке pgsql-committers по дате отправления: