Re: PushActiveSnapshot(GetTransactionSnapshot())
От | Alvaro Herrera |
---|---|
Тема | Re: PushActiveSnapshot(GetTransactionSnapshot()) |
Дата | |
Msg-id | 1314036146-sup-8140@alvh.no-ip.org обсуждение исходный текст |
Ответ на | PushActiveSnapshot(GetTransactionSnapshot()) (Simon Riggs <simon@2ndQuadrant.com>) |
Ответы |
Re: PushActiveSnapshot(GetTransactionSnapshot())
|
Список | pgsql-hackers |
Excerpts from Simon Riggs's message of dom ago 21 16:23:39 -0300 2011: > In common cases of snapshot use we run GetSnapshotData() into a > statically allocated snapshot, then immediately copy the static struct > into a dynamically allocated copy. > > The static allocation was designed to remove the overhead of dynamic > allocation, but then we do it anyway. > > The snapmgr code does this explicitly, but the reason isn't > documented, it just says we must do this. IIRC the active snapshot is scribbled onto by some operations, which is why the copy is mandatory. Maybe there's some way to optimize things so that the copy is done only when necessary. IIRC the copying of the ActiveSnapshot was only introduced because some subtle bugs were detected in the code without copy. When I introduced the mandatory copy, I don't remember thinking about the statically allocated struct. The fact that PushActiveSnapshot and GetTransactionSnapshot are in two completely separate modules complicates optimization. Note I'm not saying it's impossible -- I just didn't look into it. -- Álvaro Herrera <alvherre@commandprompt.com> The PostgreSQL Company - Command Prompt, Inc. PostgreSQL Replication, Consulting, Custom Development, 24x7 support
В списке pgsql-hackers по дате отправления: