Announcement

Collapse
No announcement yet.

SQL-Server im Netzwerk

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • SQL-Server im Netzwerk

    Hallo SQL - Spezialisten,

    ich habe eine Frage zu SQL-Server im Netzwerk.

    Ich habe eine Delphi-Programm mit SQL-Server 2000 Anbindung geschrieben (BDE-.

    Wenn ich die Anwendung auf meinem Notebook mit einer lokalen SQL-Server 2000 Installation ausführe, läuft die Anwendung schneller als wenn ich auf den SQL-Server im Netzwerk zugreife.

    Der SQL-Server im Netzwerk ist einer Festplatte fürs Betriebssystem, einer für die Logdateien und einem Raid 0 über 4 Festplatten ausgestattet. Die CPU-Auslastung liegt nur bei ca. 50
    Prozent.

    Im konkreten Fall füge ich für 20 Jahre pro Stunde einen Datensatz hinzu. Dies dauert auf dem Notebook ca. 30 Sekunden, aber auf dem Server ca. 50 Sekunden. Die Netzwerkauslastung ist lächerlich.

    Hat jemand eine Ahnung womit das zusammenhängen kann?

    Anbei die Funktion als Muster:

    db.StartTransaction;

    j:=0;
    While DT < DateTimePicker2.DateTime do
    Begin

    For j:=0 to 23 do DM_HDB.db.Execute('Insert Into HDB_Template(IDDateTime,IntValue,FloatValue,BitVal ue) Values('''+FormatDateTime('dd.mm.yyyy hh:59:59',DT+(j/24))+''',0,0,0)',nil,true);


    DT := DT + 1;
    End;

    db.Commit;

    Über Anregungen würde ich mich sehr freuen.
    Vielen Dank

  • #2
    Hi,

    die Daten müßen nun mal übers Netz und das hat eine Mindestlaufzeit egal wie die eigentliche Auslastung ist. Und da du jeden Satz per Insert SQL einfügst gehe ich davon aus das auch bei der BDE jedes Statement ein Roundtrip zum Server ist.

    Ich hab keine Ahnung von der BDE du solltest aber mal Überprüfen ob diese einen Batchmode kennt denn man hier ausnutzen kann.

    Ansonsten wäre wohl die schnellste Methode eine StoredProc in der DB der du nur dein max.Datum aus dem DateTimePicker übergibst.

    Ral

    Comment


    • #3
      > Hat jemand eine Ahnung womit das zusammenhängen kann?

      Ja. Das Netzwerk ist schuld. :-)

      Jeder Befehl wird ja über das Netzwerk übertragen und dort gibt es immer Laufzeiten die deinen Import verlangsamen. Wenn die Zeiten wirklich so kritisch sind so mußt Du versuchen die Aktion auf den Server zu verlagern. Entweder ein DCOM/COM+-Anwendung welche die Importdatei bekommt und dann lokal den Import durchführt

      Comment


      • #4
        Hallo Ricardo,<p>
        benutze entweder eine stored procedure oder zumindestens mache ein prepare vor der Schleife.
        <p>
        Heik

        Comment


        • #5
          > benutze entweder eine stored procedure oder zumindestens mache ein prepare vor der Schleife.

          Dies ist sinnvoll beschleunigt aber beide Anwendungen (Lokal/Netz). D.h. es wird immer noch ein Geschwindigkeitsunterschied zwischen Lokal- und Netzzugriff vorhanden sein. Ich würde sogar darauf Tippen das der Prozentuale Unterschied größer wird

          Comment

          Working...
          X