Mehrere Abfragen gleichzeitig senden



  • Hallo,

    ich hab nen Programm, das mehrere Datenbankabfragen auf einem anderen Rechner
    macht. Kann ich die Abfragen irgendwie gleichzeit abschicken um damit die
    benötigte Round-Trip-Time zu minimieren?

    Also zum Beispiel solche einfachen Befehle gleichzeitig absenden:
    Select * From mytable1
    Select * From mytable2

    Ist sowas überhaupt möglich?

    Gruß,
    Selector



  • Ein Select liefert immer ein Ergebnis. Insofern macht es keinen Sinn mehrere gleichzeitig abzuschicken, da du ja zu jedem Select auch ein Ergebnis erwartest.
    Lediglich eine von dir selbst geschriebene, serverseitige Applikation könnte dir so etwas bieten. Wobei du dann für eine eindeutige Zuordnung von Select und Ergebnis einen erhöhten Overhead der Kommunikation (in welcher Weise auch immer) in Kauf nehmen müsstest.

    Inserts und Updates zum Beispiel lassen sich durchaus in einem Schwung übertragen. Oft reicht da die Trennung der einzelnen Befehle durch Semikolon.

    Was ich allerdings an der ganzen Sache noch gar nicht verstehe ... was genau soll das gemeinsame Übertragen von SQL Anweisungen mit einer Optimierung der RTT zu tun haben?



  • Hab ich mir gedacht.

    Okay...
    Ist genau genommen keine Reduzierung der RTT, sondern
    wäre im Beispiel eine Minimierung von zwei mal RTT
    auf ein mal RTT. Ich denke jetzt ist klar, was ich gemeint habe.



  • Du kannst meherer Abfragen, als Batch, an den Server senden, jedenfalls beim SQL Server. Du bekommst dann einen ResultSet zurück mit mehreren Results, unter .NET kannst du über den SQLDataReader über NextResult die jeweilige Abfrage nacheinander Abrufen.



  • Ist von deiner Datenbank abhängig.

    DB2 hat z.B. keine Probleme damit auf einer Connection mehrere Select-Statements gleichzeitig zu verarbeiten.


Anmelden zum Antworten