The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Pg::Explain::Buffers - Object to store buffers information about node in PostgreSQL's explain analyze

VERSION

Version 1.13

SYNOPSIS

Quick summary of what the module does.

Perhaps a little code snippet.

    use Pg::Explain;

    my $explain = Pg::Explain->new('source_file' => 'some_file.out');
    ...

    if ( $explain->top_node->buffers ) {
        print $explain->top_node->buffers->as_text();
    }
    ...

Alternatively you can build the object itself from either a string (conforming to text version of EXPLAIN ANALYZE output) or a structure, containing keys like in JSON/YAML/XML formats of the explain:

    use Pg::Explain::Buffers;

    my $from_string = Pg::Explain::Buffers->new( 'Buffers: shared hit=12101 read=73' );
    my $from_struct = Pg::Explain::Buffers->new( {
        'Shared Hit Blocks' => 12101,
        'Shared Read Blocks' => 73,
    } );

To such object you can later on add Timing information, though only with string - if you had it in struct, make it available on creation.

    $buffers->add_timing( 'I/O Timings: read=58.316 write=1.672' );

FUNCTIONS

new

Object constructor.

Takes one argument, either a string or hashref to build data from.

add_timing

Adds timing information to existing buffer info.

Takes one argument, either a string or hashref to build data from.

as_text

Returns text representation of stored buffers info, together with timings (if available).

get_struct

Returns hash(ref) with all data about buffers from this object. Keys in this hash:

  • shared (with subkeys: hit, read, dirtied, written)

  • local (with subkeys: hit, read, dirtied, written)

  • temp (with subkeys: read, written)

  • timings (with subkeys: read, write

Only elements with non-zero values are returned. If there are no elements to be returned, it returns undef.

data

Accessor to internal data.

OPERATORS

To allow for easier work on buffer values + and - operators are overloaded, so you can:

    $buffers_out = $buffers1 - $buffers2;

While processing subtraction, it is important that it's not possible to get negative values, so if any value would drop below 0, it will get auto-adjusted to 0.

INTERNAL METHODS

_build_from_struct

Gets data out of provided HASH.

_build_from_string

Gets data out of provided string.

_buffers_add

Creates new Pg::Explain::Buffers object by adding values based on two objects. To be used like:

    my $result = $buffers1 + $buffers2;

_buffers_subtract

Creates new Pg::Explain::Buffers object by subtracting values based on two objects. To be used like:

    my $result = $buffers1 - $buffers2;

_buffers_bool

For checking if given variable is set, as in:

    $r = $buffers1 - $buffers2;
    if ( $r ) {...}

AUTHOR

hubert depesz lubaczewski, <depesz at depesz.com>

BUGS

Please report any bugs or feature requests to depesz at depesz.com.

SUPPORT

You can find documentation for this module with the perldoc command.

    perldoc Pg::Explain::Buffers

COPYRIGHT & LICENSE

Copyright 2008-2021 hubert depesz lubaczewski, all rights reserved.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.