AnyEvent-DBI
view release on metacpan or search on metacpan
=head1 NAME
AnyEvent::DBI - asynchronous DBI access
=head1 SYNOPSIS
use AnyEvent::DBI;
my $cv = AnyEvent->condvar;
my $dbh = new AnyEvent::DBI "DBI:SQLite:dbname=test.db", "", "";
$dbh->exec ("select * from test where num=?", 10, sub {
my ($dbh, $rows, $rv) = @_;
$#_ or die "failure: $@";
print "@$_\n"
for @$rows;
$cv->broadcast;
});
# asynchronously do sth. else here
$cv->wait;
=head1 DESCRIPTION
This module is an L<AnyEvent> user, you need to make sure that you use and
run a supported event loop.
This module implements asynchronous DBI access by forking or executing
separate "DBI-Server" processes and sending them requests.
It means that you can run DBI requests in parallel to other tasks.
With DBD::mysql, the overhead for very simple statements
("select 0") is somewhere around 50% compared to an explicit
prepare_cached/execute/fetchrow_arrayref/finish combination. With
DBD::SQlite3, it's more like a factor of 8 for this trivial statement.
=head2 ERROR HANDLING
NAME
AnyEvent::DBI - asynchronous DBI access
SYNOPSIS
use AnyEvent::DBI;
my $cv = AnyEvent->condvar;
my $dbh = new AnyEvent::DBI "DBI:SQLite:dbname=test.db", "", "";
$dbh->exec ("select * from test where num=?", 10, sub {
my ($dbh, $rows, $rv) = @_;
$#_ or die "failure: $@";
print "@$_\n"
for @$rows;
$cv->broadcast;
});
# asynchronously do sth. else here
$cv->wait;
DESCRIPTION
This module is an AnyEvent user, you need to make sure that you use and
run a supported event loop.
This module implements asynchronous DBI access by forking or executing
separate "DBI-Server" processes and sending them requests.
It means that you can run DBI requests in parallel to other tasks.
With DBD::mysql, the overhead for very simple statements ("select 0") is
somewhere around 50% compared to an explicit
prepare_cached/execute/fetchrow_arrayref/finish combination. With
DBD::SQlite3, it's more like a factor of 8 for this trivial statement.
ERROR HANDLING
( run in 0.265 second using v1.01-cache-2.11-cpan-0d8aa00de5b )