[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Dec 2007
    Beiträge
    16

    Geschwindigkeit beim Block-Transfer

    Hallo,

    ich wollte einen Block-Transfer in einem meiner Programme durchführen, um die Netzwerklast zu senken, bzw die Anzahl der Fetches und der darauf resultierenden Antworten zu mindern.

    Diesen initialisiere ich wie folgt:
    // Row-Wise Binding: Groesse der Struktur wird uebergeben
    if (! SQLSetStmtAttr (sqlStatement, SQL_ATTR_ROW_BIND_TYPE, (SQLPOINTER) sizeof (S_BLOCK_PERSSTAMM), 0))
    {
    // Anzahl der zu lesenden Zeilen
    if (! SQLSetStmtAttr (sqlStatement, SQL_ATTR_ROW_ARRAY_SIZE, (SQLPOINTER) sAnzahlRows, 0))
    {
    // Anzahl der gelesenen Zeilen
    if (! SQLSetStmtAttr (sqlStatement, SQL_ATTR_ROWS_FETCHED_PTR, iAnzahlRowsRead, 0))
    {
    // Stati der einzelnen Zeilen
    if (! SQLSetStmtAttr (sqlStatement, SQL_ATTR_ROW_STATUS_PTR, sStatusArray, 0))
    { ....

    Leider war das Ergebnis genau das Gegenteil von dem, was ich bewirken wollte: Mit einem Fetch bekomme ich zwar alle Datensätze zurück, aber es dauert wesentlich länger als wenn ich jeden Datensatz einzeln hole.

    Meine Vorstellung dazu ist (100 Datensätze):
    Normal: 100 - Fetches, 100 - Antworten = 200 Netzwerkpakete
    Block-Transfer: 2 - Fetches, 2 - Antworten = 4 Netzwerkpakete

    Warum ist das so? Mache ich da etwas falsch?

    Gruß Björn

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Auf die interne Art der Ausführung hat man da sowieso keinen Einfluss.
    Der Blocktransfer hat keinen Einfluss auf die Netzbelastung, da dies sowieso intern geregelt wird sondern ist reine Geschmackssache.

    Was hier die Ursache ist, lohnt wohl kaum der Analyse.

    Den einzigen Einfluss den du nehmen kannst ist die Art des Cursors.
    Wenn du einen reinen Forwardcursur nimmst (kein dynamic scroll, for update o.ä.) wird ggf. die Natzbelastung sinken.

    Ein Fetch löst nur dann einen Netztransfer aus, wenn keine Daten mehr im Puffer sind.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  3. #3
    Registriert seit
    Dec 2007
    Beiträge
    16
    Mein Cursor ist ein Forward Cursor.

    Deinen letzten Satz (Ein Fetch löst nur dann einen Netztransfer aus, wenn keine Daten mehr im Puffer sind.) verstehe ich nicht ganz.

    Heißt das, dass der Datenbanktreiber schon von sich aus, mehr Daten überträgt, als ich tatsächlich anfordere?

Similar Threads

  1. ftp transfer von AS400 in active mode
    By cc in forum IBM i Hauptforum
    Antworten: 11
    Letzter Beitrag: 29-08-11, 18:48
  2. Datum überlebt ODBC Transfer auf Excel nicht
    By jjagi in forum IBM i Hauptforum
    Antworten: 6
    Letzter Beitrag: 07-07-06, 08:29
  3. Antworten: 4
    Letzter Beitrag: 12-06-06, 12:29
  4. geschwindigkeit der netzwerkverbindung etc. anzeigen
    By GeForce in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 28-07-04, 15:46
  5. AFPDS Geschwindigkeit
    By Pmartsch in forum NEWSboard Drucker
    Antworten: 1
    Letzter Beitrag: 01-04-04, 10:29

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •