From: | Masahiko Sawada <sawada(dot)mshk(at)gmail(dot)com> |
---|---|
To: | Amit Kapila <amit(dot)kapila16(at)gmail(dot)com> |
Cc: | PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: XID-assigned idle transactions affect vacuum's job. |
Date: | 2018-03-20 15:28:44 |
Message-ID: | CAD21AoCVZZXmp3oFGOWKU1TwqMVAjv_nyuR4y0V7Z=3jS53pBQ@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Tue, Mar 20, 2018 at 11:41 PM, Masahiko Sawada <sawada(dot)mshk(at)gmail(dot)com> wrote:
> Hi, Amit
>
> On Tue, Mar 20, 2018 at 8:02 PM, Amit Kapila <amit(dot)kapila16(at)gmail(dot)com> wrote:
>> On Tue, Mar 20, 2018 at 12:22 PM, Masahiko Sawada <sawada(dot)mshk(at)gmail(dot)com> wrote:
>>> Hi,
>>>
>>> Long transactions often annoy users because if a long transaction
>>> exists on a database vacuum cannot reclaim efficiently. There are
>>> several reason why they exist on a database but it's a common case
>>> where users or applications forget to commit/rollback transactions.
>>> That is, transaction is not executing SQL and its state is 'idle in
>>> transaction' on pg_stat_activity. In this case, such transactions
>>> don't affect vacuum's job either if they aren't assigned transaction
>>> id or if they don't have a snapshot. However if they have xid it will
>>> affect vacuum's job even if they don't have a snapshot.
>>>
>>> I think that to decide which deleted tuples must be preserved we don't
>>> need to care about backend PGXACT.xid but must care about PGXACT.xmin.
>>> But current GetOldestXmin considers both of them. I guess one reason
>>> why GetOldestXmin does so is that it's also used to determine where to
>>> truncate pg_subtrans. Is there anything else reason?
>>>
>>
>> I think the main reason is that while computing snapshots, we also
>> rely on PGXACT.xid. Basically, it can be present in some other
>> snapshots xmin. Now, if you ignore it in vacuum (GetOldestXmin), then
>> it is quite possible that the xid we have ignored will be part of some
>> other snapshot's xmin which I think in turn can lead to wrong results.
>>
>
> Sorry I'm still confusing. You meant that it's possible that an xmin
> of a snapshot can be older than the oldest PGXACT.xmin? If it's
> possible I'm sure the problem happens but I'm not sure it can happen
> because PGXACT.xmin is the oldest xid when taking a snapshot. I think
> that the oldest PGXACT.xmin can be either the same as or younger than
> the oldest PGXACT.xid.
>
I sent the previous mail before checking the mail by Tom, and now I
understood that the necessity of including PGXACT.xid. Sorry for the
stupid question.
Regards,
--
Masahiko Sawada
NIPPON TELEGRAPH AND TELEPHONE CORPORATION
NTT Open Source Software Center
From | Date | Subject | |
---|---|---|---|
Next Message | Robert Haas | 2018-03-20 15:28:52 | Re: Define variable only in the scope that needs it |
Previous Message | David Steele | 2018-03-20 15:23:20 | Re: PATCH: Configurable file mode mask |