Re: [HACKERS] How To free resources used by large object Relations?
От | Vadim B. Mikheev |
---|---|
Тема | Re: [HACKERS] How To free resources used by large object Relations? |
Дата | |
Msg-id | 34F0022B.60E59681@sable.krasnoyarsk.su обсуждение исходный текст |
Ответ на | How To free resources used by large object Relations? ("Maurice Gittens" <mgittens@gits.nl>) |
Список | pgsql-hackers |
Maurice Gittens wrote: > > Hi, > > I've changed the large object memory managment strategy to ensure that > each large object has it's own memory context. > This way I can free all memory for a large object when I lo_close > is called for it's oid. This seems to work. > > I've noticed that the heap_close function used to close the heap used > by a large object doesn't really do any thing. (It calls RelationClose > which decrements some reference count). > > Somehow I have to free the relation from the cache in the following > situations: > 1. In a transaction I must free the stuff when the transaction is > commited/aborted. Backend does it, don't worry. > 2. Otherwise it must happen when lo_close is called. It seems that you can't remove relation from cache untill commit/abort, currently: backend uses local cache to unlink files of relations created in transaction if abort... We could change relcache.c:RelationPurgeLocalRelation() to read from pg_class directly... But how many LO do you create in single xact ? Is memory allocated for cache so big ? Vadim
В списке pgsql-hackers по дате отправления: