Re: drop/truncate table sucks for large values of shared buffers

Поиск
Список
Период
Сортировка
От Simon Riggs
Тема Re: drop/truncate table sucks for large values of shared buffers
Дата
Msg-id CANP8+jKUu6WBNGJvG3aoHDVXN8A0evY-_zoCRMq_G+md3nMkwg@mail.gmail.com
обсуждение исходный текст
Ответ на Re: drop/truncate table sucks for large values of shared buffers  (Tom Lane <tgl@sss.pgh.pa.us>)
Ответы Re: drop/truncate table sucks for large values of shared buffers
Список pgsql-hackers
On 27 June 2015 at 15:10, Tom Lane <tgl@sss.pgh.pa.us> wrote:
Amit Kapila <amit.kapila16@gmail.com> writes:
> I have looked into it and found that the main reason for such
> a behaviour is that for those operations it traverses whole
> shared_buffers and it seems to me that we don't need that
> especially for not-so-big tables.  We can optimize that path
> by looking into buff mapping table for the pages that exist in
> shared_buffers for the case when table size is less than some
> threshold (say 25%) of shared buffers.

I don't like this too much because it will fail badly if the caller
is wrong about the maximum possible page number for the table, which
seems not exactly far-fetched.  (For instance, remember those kernel bugs
we've seen that cause lseek to lie about the EOF position?)  It also
offers no hope of a fix for the other operations that scan the whole
buffer pool, such as DROP TABLESPACE and DROP DATABASE.

If that is true, then our reliance on lseek elsewhere could also cause data loss, for example by failing to scan data during a seq scan.

The consequences of failure of lseek in this case are nowhere near as dire, since by definition the data is being destroyed by the user.

So ISTM that we should be able to use this technique.

--
Simon Riggs                http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

В списке pgsql-hackers по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: Semantics of pg_file_settings view
Следующее
От: Tom Lane
Дата:
Сообщение: Re: drop/truncate table sucks for large values of shared buffers