On Sat, 24 Dec 2005, Tom Lane wrote:
>
> Removing these comments entirely, without changing the code they explain,
> doesn't strike me as an improvement.
>
I just checked if we can remove XLOG_NO_TRAN happily, and the conclusion
is that it could bring some benefits (though not much) to our system. The
key is the CheckpointStartLock lock. If we remove XLOG_NO_TRAN, then even
statement like this will block/wait checkpoint:
SELECT nextval('serial');
Of course, we can add a test in XLogInsert() to solve this problem like
this:
no_tran == ((rmid == RM_XLOG_ID) || (rmid == RM_SEQ_ID) || ...)
But the better way is leave XLOG_NO_TRAN for now till we find a way to
avoid CheckpointStartLock lock.
Regards,
Qingqing