Re: COPY FREEZE and setting PD_ALL_VISIBLE/visibility map bits
От | Masahiko Sawada |
---|---|
Тема | Re: COPY FREEZE and setting PD_ALL_VISIBLE/visibility map bits |
Дата | |
Msg-id | CAD21AoDTKZ0VjRRrhVO1Vj5R3Dz_u8cJYNkC3a7vvFU6zjRGNw@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: COPY FREEZE and setting PD_ALL_VISIBLE/visibility map bits (Pavan Deolasee <pavan.deolasee@gmail.com>) |
Ответы |
Re: COPY FREEZE and setting PD_ALL_VISIBLE/visibility map bits
|
Список | pgsql-hackers |
On Tue, Mar 12, 2019 at 4:54 PM Pavan Deolasee <pavan.deolasee@gmail.com> wrote: > > > On Mon, Mar 11, 2019 at 1:37 PM Masahiko Sawada <sawada.mshk@gmail.com> wrote: >> >> >> >> I might be missing something but why do we need to recheck whether >> each pages is all-frozen after insertion? I wonder if we can set >> all-frozen without checking all tuples again in this case. > > > It's possible that the user may have inserted unfrozen rows (via regular INSERT or COPY without FREEZE option) before insertingfrozen rows. I think that since COPY FREEZE can be executed only when the table is created or truncated within the transaction other users cannot insert any rows during COPY FREEZE. > So we can't set the all-visible/all-frozen flag unconditionally. I also find it safer to do an explicit check to ensurewe never accidentally mark a page as all-frozen. Since the check is performed immediately after the page becomes fulland only once per page, there shouldn't be any additional IO cost and the check should be quite fast. I'd suggest to measure performance overhead. I can imagine one use case of COPY FREEZE is the loading a very large table. Since in addition to set visibility map bits this patch could scan a very large table I'm concerned that how much performance is degraded by this patch. Regards, -- Masahiko Sawada NIPPON TELEGRAPH AND TELEPHONE CORPORATION NTT Open Source Software Center
В списке pgsql-hackers по дате отправления: