Thread: [HACKERS] xlogfilename

[HACKERS] xlogfilename

From
王刚
Date:
I study source code about wal, and have a question about xlog file name . what does 000000010000000000000001 mean? Someone says that it means tli logid segno. I don't understand.

Re: [HACKERS] xlogfilename

From
DEV_OPS
Date:
I think you may reference to function: pg_xlogfile_name   in
src/backend/access/transam/xlogfuncs.c,  it use XLogFileName  defined in
src/include/access/xlog_internal.h

#define XLogFileName(fname, tli, logSegNo)  \   snprintf(fname, MAXFNAMELEN, "%08X%08X%08X", tli,       \
(uint32)((logSegNo) / XLogSegmentsPerXLogId), \            (uint32) ((logSegNo) % XLogSegmentsPerXLogId))
 


hope it's helpful for you

--Tony

On 20/07/2017 16:42, 王刚 wrote:
> I study source code about wal, and have a question about xlog file name . what does 000000010000000000000001 mean?
Someonesays that it means tli logid segno. I don't understand.
 






Re: [HACKERS] xlogfilename

From
Michael Paquier
Date:
On Thu, Jul 20, 2017 at 10:58 AM, DEV_OPS <devops@ww-it.cn> wrote:
> I think you may reference to function: pg_xlogfile_name   in
> src/backend/access/transam/xlogfuncs.c,  it use XLogFileName  defined in
> src/include/access/xlog_internal.h
>
> #define XLogFileName(fname, tli, logSegNo)  \
>     snprintf(fname, MAXFNAMELEN, "%08X%08X%08X", tli,       \
>              (uint32) ((logSegNo) / XLogSegmentsPerXLogId), \
>              (uint32) ((logSegNo) % XLogSegmentsPerXLogId))
>
>
> hope it's helpful for you

The first 8 characters are the timeline number in hexadecimal format.
The next 8 characters indicate a segment number, which gets
incremented every 256 segments in hexa format. The last 8 characters
indicate the current segment number in hexa format.
-- 
Michael



Re: [HACKERS] xlogfilename

From
Yugo Nagata
Date:
On Thu, 20 Jul 2017 11:02:25 +0200
Michael Paquier <michael.paquier@gmail.com> wrote:

> On Thu, Jul 20, 2017 at 10:58 AM, DEV_OPS <devops@ww-it.cn> wrote:
> > I think you may reference to function: pg_xlogfile_name   in
> > src/backend/access/transam/xlogfuncs.c,  it use XLogFileName  defined in
> > src/include/access/xlog_internal.h
> >
> > #define XLogFileName(fname, tli, logSegNo)  \
> >     snprintf(fname, MAXFNAMELEN, "%08X%08X%08X", tli,       \
> >              (uint32) ((logSegNo) / XLogSegmentsPerXLogId), \
> >              (uint32) ((logSegNo) % XLogSegmentsPerXLogId))
> >
> >
> > hope it's helpful for you
> 
> The first 8 characters are the timeline number in hexadecimal format.
> The next 8 characters indicate a segment number, which gets
> incremented every 256 segments in hexa format. The last 8 characters
> indicate the current segment number in hexa format.

As far as I understand, XLOG is a logical big file of 256 * 16 MB,
and this is split to multiple physical files of 16MB which are called
WAL segments. The second 8 characters indicate the id of the logical
xlog file, and the last 8 characters indicate the sequencial number of
the segment in this xlog.

Regards,

> -- 
> Michael
> 
> 
> -- 
> Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-hackers


-- 
Yugo Nagata <nagata@sraoss.co.jp>



Re: [HACKERS] xlogfilename

From
Craig Ringer
Date:
On 20 July 2017 at 21:33, Yugo Nagata <nagata@sraoss.co.jp> wrote:
On Thu, 20 Jul 2017 11:02:25 +0200
Michael Paquier <michael.paquier@gmail.com> wrote:

> On Thu, Jul 20, 2017 at 10:58 AM, DEV_OPS <devops@ww-it.cn> wrote:
> > I think you may reference to function: pg_xlogfile_name   in
> > src/backend/access/transam/xlogfuncs.c,  it use XLogFileName  defined in
> > src/include/access/xlog_internal.h
> >
> > #define XLogFileName(fname, tli, logSegNo)  \
> >     snprintf(fname, MAXFNAMELEN, "%08X%08X%08X", tli,       \
> >              (uint32) ((logSegNo) / XLogSegmentsPerXLogId), \
> >              (uint32) ((logSegNo) % XLogSegmentsPerXLogId))
> >
> >
> > hope it's helpful for you
>
> The first 8 characters are the timeline number in hexadecimal format.
> The next 8 characters indicate a segment number, which gets
> incremented every 256 segments in hexa format. The last 8 characters
> indicate the current segment number in hexa format.

As far as I understand, XLOG is a logical big file of 256 * 16 MB,
and this is split to multiple physical files of 16MB which are called
WAL segments. The second 8 characters indicate the id of the logical
xlog file, and the last 8 characters indicate the sequencial number of
the segment in this xlog.

You missed the timeline ID, which is the first 8 digits.


--
 Craig Ringer                   http://www.2ndQuadrant.com/
 PostgreSQL Development, 24x7 Support, Training & Services

Re: [HACKERS] xlogfilename

From
Yugo Nagata
Date:
On Fri, 21 Jul 2017 10:11:05 +0800
Craig Ringer <craig@2ndquadrant.com> wrote:

> On 20 July 2017 at 21:33, Yugo Nagata <nagata@sraoss.co.jp> wrote:
> 
> > On Thu, 20 Jul 2017 11:02:25 +0200
> > Michael Paquier <michael.paquier@gmail.com> wrote:
> >
> > > On Thu, Jul 20, 2017 at 10:58 AM, DEV_OPS <devops@ww-it.cn> wrote:
> > > > I think you may reference to function: pg_xlogfile_name   in
> > > > src/backend/access/transam/xlogfuncs.c,  it use XLogFileName  defined
> > in
> > > > src/include/access/xlog_internal.h
> > > >
> > > > #define XLogFileName(fname, tli, logSegNo)  \
> > > >     snprintf(fname, MAXFNAMELEN, "%08X%08X%08X", tli,       \
> > > >              (uint32) ((logSegNo) / XLogSegmentsPerXLogId), \
> > > >              (uint32) ((logSegNo) % XLogSegmentsPerXLogId))
> > > >
> > > >
> > > > hope it's helpful for you
> > >
> > > The first 8 characters are the timeline number in hexadecimal format.
> > > The next 8 characters indicate a segment number, which gets
> > > incremented every 256 segments in hexa format. The last 8 characters
> > > indicate the current segment number in hexa format.
> >
> > As far as I understand, XLOG is a logical big file of 256 * 16 MB,
> > and this is split to multiple physical files of 16MB which are called
> > WAL segments. The second 8 characters indicate the id of the logical
> > xlog file, and the last 8 characters indicate the sequencial number of
> > the segment in this xlog.
> > <http://www.postgresql.org/mailpref/pgsql-hackers>
> >
> 
> You missed the timeline ID, which is the first 8 digits.

Yes, I missed this. Thanks.

> 
> 
> -- 
>  Craig Ringer                   http://www.2ndQuadrant.com/
>  PostgreSQL Development, 24x7 Support, Training & Services


-- 
Yugo Nagata <nagata@sraoss.co.jp>