GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
DBIx::Class::QueryLog::Analyzer(3) User Contributed Perl Documentation DBIx::Class::QueryLog::Analyzer(3)

DBIx::Class::QueryLog::Analyzer - Query Analysis

version 1.005001

Analyzes the results of a QueryLog. Create an Analyzer and pass it the QueryLog:

    my $schema = ... # Get your schema!
    my $ql = DBIx::Class::QueryLog->new;
    $schema->storage->debugobj($ql);
    $schema->storage->debug(1);
    ... # do some stuff!
    my $ana = DBIx::Class::QueryLog::Analyzer->new({ querylog => $ql });
    my @queries = $ana->get_sorted_queries;
    # or...
    my $totaled = $ana->get_totaled_queries;

Create a new DBIx::Class::QueryLog::Analyzer

Returns an arrayref of all Query objects, sorted by elapsed time (descending).

Returns an arrayref of Query objects representing in order of the fastest executions of a given statement. Accepts either SQL or a DBIx::Class::QueryLog::Query object. If given SQL, it must match the executed SQL, including placeholders.

  $ana->get_slowest_query_executions("SELECT foo FROM bar WHERE gorch = ?");

Opposite of get_fastest_query_executions. Same arguments.

Returns hashref of the queries executed, with same-SQL combined and totaled. So if the same query is executed multiple times, it will be combined into a single entry. The structure is:

    $var = {
        'SQL that was EXECUTED' => {
            count           => 2,
            time_elapsed    => 1931,
            queries         => [
                DBIx::Class::QueryLog...,
                DBIx::Class::QueryLog...
            ]
        }
    }

This is useful for when you've fine-tuned individually slow queries and need to isolate which queries are executed a lot, so that you can determine which to focus on next.

To sort it you'll want to use something like this (sorry for the long line, blame perl...):

    my $analyzed = $ana->get_totaled_queries;
    my @keys = reverse sort {
            $analyzed->{$a}->{'time_elapsed'} <=> $analyzed->{$b}->{'time_elapsed'}
        } keys(%{ $analyzed });

So one could sort by count or time_elapsed.

Same as get_totaled_queries, but breaks the totaled queries up by bucket:

$var = { 'bucket1' => { 'SQL that was EXECUTED' => { count => 2, time_elapsed => 1931, queries => [ DBIx::Class::QueryLog..., DBIx::Class::QueryLog... ] } } 'bucket2' => { ... } }

It is otherwise identical to get_totaled_queries

  • Arthur Axel "fREW" Schmidt <frioux+cpan@gmail.com>
  • Cory G Watson <gphat at cpan.org>

This software is copyright (c) 2015 by Cory G Watson <gphat at cpan.org>.

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

2015-12-08 perl v5.32.1

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.