Re: increasing the default WAL segment size

Jim Nasby <jim.nasby@bluetreble.com>

From: Jim Nasby <Jim.Nasby@BlueTreble.com>
To: David Rowley <david.rowley@2ndquadrant.com>, Michael Paquier <michael.paquier@gmail.com>
Cc: PostgreSQL mailing lists <pgsql-hackers@postgresql.org>, Beena Emerson <memissemerson@gmail.com>
Date: 2017-01-08T00:45:30Z
Lists: pgsql-hackers
On 1/4/17 10:03 PM, David Rowley wrote:
>> I recall taht pow(x, 2) and x * x result usually in the same assembly
>> code, but pow() can never be more optimal than a simple
>> multiplication. So I'd think that it is wiser to avoid it in this code
>> path. Documentation is missing for the new replication command
>> SHOW_WAL_SEG. Actually, why not just having an equivalent of the SQL
>> command and be able to query parameter values?
> This would probably be nicer written using a bitwise trick to ensure
> that no lesser significant bits are set. If it's a power of 2, then
> subtracting 1 should have all the lesser significant bits as 1, so
> binary ANDing to that should be 0. i.e no common bits.
>
> Something like:
>
> /* ensure segment size is a power of 2 */
> if ((wal_segment_size & (wal_segment_size - 1)) != 0)
> {
>    fprintf(stderr, _("%s: WAL segment size must be in the power of
> 2\n"), progname);
>    exit(1);
> }
>
> There's a similar trick in bitmapset.c for RIGHTMOST_ONE, so looks
> like we already have assumptions about two's complement arithmetic

Well, now that there's 3 places that need to do almost the same thing, I 
think it'd be best to just centralize this somewhere. I realize that's 
not going to save any significant amount of code, but it would make it 
crystal clear what's going on (assuming the excellent comment above 
RIGHTMOST_ONE was kept).
-- 
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)


Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Make WAL segment size configurable at initdb time.

  2. Perform only one ReadControlFile() during startup.

  3. Introduce BYTES unit for GUCs.

  4. Remove useless duplicate inclusions of system header files.

  5. Refactor other replication commands to use DestRemoteSimple.

  6. Add a SHOW command to the replication command language.

  7. Add a new DestReceiver for printing tuples without catalog access.

  8. Support fls().

  9. Extend yesterday's patch making BLCKSZ and RELSEG_SIZE configurable to also

  10. Commit the reasonably uncontroversial parts of J.R. Nield's PITR patch, to

  11. XLOG (also known as WAL -:)) Bootstrap/Startup/Shutdown.

  12. Transaction log manager core code.