Asynchrone Datenbankzugriffe im Hintergrund mit PostgreSQL und DBD::Pg

| 3 Kommentare | Keine TrackBacks

Mit PostgreSQL und DBI sowie DBD::Pg ist es möglich, SQL-Queries im Hintergrund asynchron laufen zu lassen – und währenddessen in Perl weitere Berechnungen anzustellen, anstatt nur auf die Daten zu warten. Insbesondere bei Multi-Core-CPUs oder einer Trennung von Datenbankserver und Anwendung ist dies eine sehr praktische Sache.

Und einfach ist es obendrein!

Bei dem jeweiligen Aufruf von $dbh->do, $dbh->prepare oder $dbh->prepare_cached muss nur das Attribut PG_ASYNC hinzugefügt werden. Besonders praktisch ist das bei INSERT und UPDATE Queries, wenn also keine Rückgabewerte ausgewertet werden müssen, da kann man im neuen Query einfach noch auf den Rest des alten warten:

use DBD::Pg qw(:async);    # Async-Konstanten einbinden

# ... und später Query vorbereiten:

my $sth = $self->dbh->prepare( "INSERT INTO table ...", 
          { pg_async => PG_ASYNC + PG_OLDQUERY_WAIT } );

# ... und dann zum Beispiel in einer Schleife aufrufen
while ( my @parameter = calculate_next_insert() )
    {
    $sth->execute( @parameter );
    }

# ...

Wenn man also zwischen mehreren INSERT-Statements noch Eingabedaten berechnen muss, kann dies Zeit sparen. Vor weiteren Queries oder dem Commit sollte man dann noch mit $dbh->pg_result() auf das Ergebnis des letzten asynchronen Queries warten.

Mehr Beispiele und die Darstellung aller Features gibt es in der DBD::Pg Dokumentation.

 

Keine TrackBacks

TrackBack-URL: http://www.perl-blog.de/mt/mt-tb.cgi/664

3 Kommentare

Hallo!
gibt es dein Buch zu Perl6 schon? Wo kann man das kaufen oder gibt es das zum Free Download hier sogar auf der Seite? Konnte es hier nirgend wo finden...

Oder kannst du mir ein anderes Buch empfehlen?

Nein, leider ist das noch nicht fertig. :-(
Es gibt die englischsprachige Dokumentation und da auch ein "Open Source"-Buch, das allerdings auch in einem frühen Stadium ist.
URLs weiß ich gerade nicht auswendig, lässt sich aber leicht finden.

Oke, danke für den Tipp. Schade natürlich. Wird euer Buch auch als open source erscheinen?

Jetzt kommentieren

Aktuelle Kommentare

  • Niels Dettenbach: ...schade eigentlich, das es PyPerl nicht mehr wirklich gibt. Zwar weiter lesen
  • Alvar Freude: Kannte ich noch nicht, danke für den Hinweis; allerdings ist weiter lesen
  • Ben Sieverts: Ich vermisse noch folgendes Buch auf der List: Effective Perl weiter lesen
  • Alex: Ich schlage einfach mal ganz unverschämt bei diesem Beitrag die weiter lesen
  • Marcel: Oke, danke für den Tipp. Schade natürlich. Wird euer Buch weiter lesen
  • Alvar: Nein, leider ist das noch nicht fertig. :-( Es gibt weiter lesen
  • Marcel : Hallo! gibt es dein Buch zu Perl6 schon? Wo kann weiter lesen
  • air max 2009: Nimm ein Paradigma deiner Wahl (z.b. MVC) und lerne Applikationscode weiter lesen
  • vTasker: Was ist das denn für ein MIST? Der Artikel ist weiter lesen
  • Virenschutz-Test: Das ist ja lustig hihi. Der Admin ist wohl nicht weiter lesen

Über diese Seite

Diese Seite enthält einen einen einzelnen Eintrag von Alvar Freude vom 12.08.10 23:23.

Call for Papers: 12. Deutscher Perl-Workshop 2010: „Modern Perl“ ist der vorherige Eintrag in diesem Blog.

Aktuelle Einträge finden Sie auf der Startseite, alle Einträge in den Archiven.