Re: Way to check whether a particular block is on the shared_buffer?
От | Alvaro Herrera |
---|---|
Тема | Re: Way to check whether a particular block is on the shared_buffer? |
Дата | |
Msg-id | 20160202111112.GA114722@alvherre.pgsql обсуждение исходный текст |
Ответ на | Re: Way to check whether a particular block is on the shared_buffer? (Kouhei Kaigai <kaigai@ak.jp.nec.com>) |
Ответы |
Re: Way to check whether a particular block is on the
shared_buffer?
|
Список | pgsql-hackers |
Kouhei Kaigai wrote: > > On 1/31/16 7:38 PM, Kouhei Kaigai wrote: > > To answer your direct question, I'm no expert, but I haven't seen any > > functions that do exactly what you want. You'd have to pull relevant > > bits from ReadBuffer_*. Or maybe a better method would just be to call > > BufTableLookup() without any locks and if you get a result > -1 just > > call the relevant ReadBuffer function. Sometimes you'll end up calling > > ReadBuffer even though the buffer isn't in shared buffers, but I would > > think that would be a rare occurrence. > > > Thanks, indeed, extension can call BufTableLookup(). PrefetchBuffer() > has a good example for this. > > If it returned a valid buf_id, we have nothing difficult; just call > ReadBuffer() to pin the buffer. Isn't this what (or very similar to) ReadBufferExtended(RBM_ZERO_AND_LOCK) is already doing? -- Álvaro Herrera http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
В списке pgsql-hackers по дате отправления: