Re: My "TOAST slicing" patch -explanation
От | Tom Lane |
---|---|
Тема | Re: My "TOAST slicing" patch -explanation |
Дата | |
Msg-id | 2883.1014576761@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | My "TOAST slicing" patch -explanation (John Gray <jgray@azuli.co.uk>) |
Ответы |
Re: My "TOAST slicing" patch -explanation
|
Список | pgsql-hackers |
John Gray <jgray@azuli.co.uk> writes: > Finally, I am aware of the following items which are not covered by the > patch: > 1) Efficient updating of parts of a value. This is not trivial[1]. Actually, based on subsequent discussion I now understand that efficient updating of parts of a TOASTed value is impossible, if by that you mean rewriting only the modified part. This is so because TOAST does not use MVCC, really: it relies on MVCC for the owning tuple to determine visibility of a tuple value. The only safe way to update a TOAST item is to rewrite the whole thing with a new TOAST id number and then update the owning tuple to reference that new id. Despite this, it'd be a really good idea to offer functions that allow applications to write part of a large TOASTed value. Even if it can't be as efficient as we'd like, we could still eliminate pushing the rest of the value back and forth to the client. > 2) Should the large object interface be handled via TOAST?[2] Probably not, given the above facts. We do have MVCC behavior for partial updates of large objects, and we shouldn't lose it. Having said all that, I think John's patch for substring extraction is fine in concept. I haven't looked at it in detail, but I think we should review it and expect to apply it (possibly with some cleanups). regards, tom lane
В списке pgsql-hackers по дате отправления: