On 1/5/17 5:38 AM, Beena Emerson wrote:
On Tue, Jan 3, 2017 at 2:53 AM, Jim Nasby <jim.na...@bluetreble.com
<mailto:jim.na...@bluetreble.com>> wrote:
    General comments:
    There was some discussion about the impact of this on small
    installs, particularly around min_wal_size. The concern was that
...
The patch maintains the current XLOG_SEG_SIZE of 16MB as the default.
Only the capability to change its value has been moved for configure to
initdb.

Ah, I missed that. Thanks for clarifying.

    It's not clear from the thread that there is consensus that this
    feature is desired. In particular, the performance aspects of
    changing segment size from a C constant to a variable are in
    question. Someone with access to large hardware should test that.
    Andres[1] and Robert[2] did suggest that the option could be changed
    to a bitshift, which IMHO would also solve some sanity-checking issues.

Are you going to change to a bitshift in the next patch?

    +        * initdb passes the WAL segment size in an environment
    variable. We don't
    +        * bother doing any sanity checking, we already check in
    initdb that the
    +        * user gives a sane value.

    That doesn't seem like a good idea to me. If anything, the backend
    should sanity-check and initdb just rely on that. Perhaps this is
    how other initdb options work, but it still seems bogus. In
    particular, verifying the size is a power of 2 seems important, as
    failing that would probably be ReallyBad(tm).

    The patch also blindly trusts the value read from the control file;
    I'm not sure if that's standard procedure or not, but ISTM it'd be
    worth sanity-checking that as well.


There is a CRC check to detect error in the file. I think all the
ControlFile values are used directly and not re-verified.

Sounds good. I do still think the variable from initdb should be sanity-checked.

    The patch leaves the base GUC units for min_wal_size and
    max_wal_size as the # of segments. I'm not sure if that's a great idea.


I think we can leave it as is. This is used in
CalculateCheckpontSegments and in XLOGfileslop to calculate the segment
numbers.

My concern here is that we just changed from segments to KB for all the checkpoint settings, and this is introducing segments back in, but ...

I agree pretty_print_kb would have been a better for this function.
However, I have realised that using the show hook and this function is
not suitable and have found a better way of handling the removal of
GUC_UNIT_XSEGS which no longer needs this function : using the
GUC_UNIT_KB, convert the value in bytes to wal segment count instead in
the assign hook. The next version of patch will use this.

... it sounds like you're going back to exposing KB to users, and that's all that really matters.

    IMHO it'd be better to use the n & (n-1) check detailed at [3].

See my other email about that.
--
Jim Nasby, Data Architect, Blue Treble Consulting, Austin TX
Experts in Analytics, Data Architecture and PostgreSQL
Data in Trouble? Get it in Treble! http://BlueTreble.com
855-TREBLE2 (855-873-2532)


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

Reply via email to