Re: Improving the Performance of Full Table Updates
От | Heikki Linnakangas |
---|---|
Тема | Re: Improving the Performance of Full Table Updates |
Дата | |
Msg-id | 46F21F26.7030407@enterprisedb.com обсуждение исходный текст |
Ответ на | Improving the Performance of Full Table Updates ("Gokulakannan Somsundaram" <gokul007@gmail.com>) |
Ответы |
Re: Improving the Performance of Full Table Updates
|
Список | pgsql-hackers |
Gokulakannan Somsundaram wrote: > Hi, > The Current architecture of Updates in PostgreSQL is > 1) Make a select query out of update. It involves a READ lock/BUFFER_SHARE > 2) Get the tupleid > 3) Goto the buffer containing the tupleid, make a BUFFER_EXCLUSIVE lock on > it > 4) update it > 5) Repeat the above process for subsequent rows > > I propose to change this row-by-row approach, when it is a full table > update. I plan to send a extra flag(which will be set for Full table > Deletes/Updates). this would make the access method directly acquire the > exclusive lock and update the existing record. > > For Deletes this is simple. But for updates, the projection tuple has to be > made before re-inserting it. So there will be a list of Heap tuples stored > in memory for each page getting updated. these tuples will be inserted after > the deletion part of update is done. This is just a rough design. I may get > involved in a detail design once i get a nod from the mailing list > community. I doubt the locking overhead is that significant. Have you done any profiling to show that it's worth it? -- Heikki Linnakangas EnterpriseDB http://www.enterprisedb.com
В списке pgsql-hackers по дате отправления: