Re: Visibility map, partial vacuums
От | Simon Riggs |
---|---|
Тема | Re: Visibility map, partial vacuums |
Дата | |
Msg-id | 1225215024.3971.221.camel@ebony.2ndQuadrant обсуждение исходный текст |
Ответ на | Re: Visibility map, partial vacuums (Heikki Linnakangas <heikki.linnakangas@enterprisedb.com>) |
Список | pgsql-hackers |
On Tue, 2008-10-28 at 19:02 +0200, Heikki Linnakangas wrote: > Yes, but there's a problem with recently inserted tuples: > > 1. A query begins in the slave, taking a snapshot with xmax = 100. So > the effects of anything more recent should not be seen. > 2. Transaction 100 inserts a tuple in the master, and commits > 3. A vacuum comes along. There's no other transactions running in the > master. Vacuum sees that all tuples on the page, including the one just > inserted, are visible to everyone, and sets PD_ALL_VISIBLE flag. > 4. The change is replicated to the slave. > 5. The query in the slave that began at step 1 looks at the page, sees > that the PD_ALL_VISIBLE flag is set. Therefore it skips the visibility > checks, and erroneously returns the inserted tuple. Yep. I was thinking about FSM and row removal. So PD_ALL_VISIBLE must be separately settable on the standby. Another reason why it should be able to be set without a VACUUM - since there will never be one on standby. -- Simon Riggs www.2ndQuadrant.comPostgreSQL Training, Services and Support
В списке pgsql-hackers по дате отправления: