|
NAMEDBIx::Class::QueryLog::Analyzer - Query Analysis VERSIONversion 1.005001 SYNOPSISAnalyzes 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;
METHODSnewCreate a new DBIx::Class::QueryLog::Analyzer get_sorted_queriesReturns an arrayref of all Query objects, sorted by elapsed time (descending). get_fastest_query_executions($sql_statement)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 = ?");
get_slowest_query_executions($sql_statement)Opposite of get_fastest_query_executions. Same arguments. get_totaled_queriesReturns 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. get_totaled_queries_by_bucketSame as get_totaled_queries, but breaks the totaled queries up by bucket: $var = {
It is otherwise identical to get_totaled_queries AUTHORS
COPYRIGHT AND LICENSEThis 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.
|