NAME
Catalyst::TraitFor::Model::DBIC::Schema::QueryLog -
DBIx::Class::QueryLog support for Catalyst::Model::DBIC::Schema
VERSION
version 0.03
SYNOPSIS
use base qw/Catalyst::Model::DBIC::Schema/;
__PACKAGE__->config({
traits => ['QueryLog'],
connect_info =>
['dbi:mysql:master', 'user', 'pass'],
});
# or
__PACKAGE__->config({
traits => ['QueryLog'],
connect_info =>
['dbi:mysql:master', 'user', 'pass'],
querylog_args => {
passthrough => 1,
},
});
DESCRIPTION
check Catalyst::Model::DBIC::Schema for more details
Enable DBIx::Class::QueryLog support for Catalyst::Model::DBIC::Schema.
METHODS
querylog
an instance of DBIx::Class::QueryLog.
querylog_analyzer
an instance of DBIx::Class::QueryLog::Analyzer.
querylog_args
passed to DBIx::Class::QueryLog->new;
EXAMPLE CODE
Query Log Report
[% SET total = c.model('FilmDB').querylog.time_elapsed | format('%0.6f') %]
Total SQL Time: [% total | format('%0.6f') %] seconds
[% SET qcount = c.model('FilmDB').querylog.count %]
Total Queries: [% qcount %]
[% IF qcount %]
Avg Statement Time: [% (c.model('FilmDB').querylog.time_elapsed / qcount) | format('%0.6f') %] seconds.
5 Slowest Queries |
Time |
% |
SQL |
[% SET i = 0 %]
[% FOREACH q = c.model('FilmDB').querylog_analyzer.get_sorted_queries %]
[% q.time_elapsed | format('%0.6f') %]
| [% ((q.time_elapsed / total ) * 100 ) | format('%i') %]% |
[% q.sql %] : ([% q.params.join(', ') %]) |
[% IF i == 5 %]
[% LAST %]
[% END %]
[% SET i = i + 1 %]
[% END %]
[% END %]
OR
my $total = sprintf('%0.6f', $c->model('DBIC')->querylog->time_elapsed);
$c->log->debug("Total SQL Time: $total seconds");
my $qcount = $c->model('DBIC')->querylog->count;
if ($qcount) {
$c->log->debug("Avg Statement Time: " . sprintf('%0.6f', $total / $qcount));
my $i = 0;
my $qs = $c->model('DBIC')->querylog_analyzer->get_sorted_queries();
foreach my $q (@$qs) {
my $q_total = sprintf('%0.6f', $q->time_elapsed);
my $q_percent = sprintf('%0.6f', ( ($q->time_elapsed / $total) * 100 ));
my $q_sql = $q->sql . ' : ' . join(', ', @{$q->params});
$c->log->debug("SQL: $q_sql");
$c->log->debug("Costs: $q_total, takes $q_percent");
last if ($i == 5);
$i++;
}
}
SEE ALSO
Catalyst::Model::DBIC::Schema
DBIx::Class::QueryLog
Catalyst::Component::InstancePerContext
AUTHOR
Fayland Lam
COPYRIGHT AND LICENSE
This software is copyright (c) 2010 by Fayland Lam.
This is free software; you can redistribute it and/or modify it under
the same terms as perl itself.