Sehr langsame MySQL Zugriffe



  • Ich habe mit dem C++ Builder 5.0 eine MySQL - Datenbankanwendung geschrieben.
    Diese lag auf meinen Rechner und 3 andere User konnten zugreifen.
    In der letzten Zeit wuchs die Datenbank und wir entschlossen uns
    erstmal dazu, auf eine MySQL Datenbank lokal auf unseren eigenen Rechnern
    zu arbeiten.
    Dazu hat jeder von mir die letzte Version der DB bekommen und sich lokal
    in der ODBC registriert.
    Seit dem hat jeder Antwortzeiten von ca. 3 Sekunden bei SELECT, etc.
    Das gleiche passiert, wenn ich die DB auf meinen Rechner laufen lasse und die anderen greifen darauf zu-was ja vorher sehr schnell ging.
    In der DB sind 14 Tabellen (können noch mehr werden).
    Bis jetzt sind noch keine Datensätze eingepflegt, sollten aber ca. 300 werden.

    Liegt es vielleicht an dem Umfang, oder habe ich etwas falsch gemacht ???



  • Ich kann dir leider keine Antwort geben, aber hast du ein Tutorial, in dem beschrieben ist, wie du vorgegangen bist? Ich möchte nämlich etwas ähnliches machen wie du.
    Gruß Ingo



  • Welche DB-Komponenten benutzt du denn?
    Hast du dir mal die Eigenschaft "Prepared" schon mal angeschaut?
    Welche Antwortzeit hast du denn, wenn du direkt auf der DB deine Befehle ausführst?



  • Passen die Versionen der ODBC-Treiber und der DB zusammen .. ??
    Ich setze eine ähnliches Umfeld ohne Problem ein

    Wilfrid



  • Ich verwende die MySQL-DAC - Kompos von www.microolap.com . Über das Intranet habe ich ca. 10 - 30ms Zugriffszeit. Die bei Dir beschriebenen 3sec könnten Durch ungeschickte SELECTs zustande kommen bei denen unnötig viele Datensätze zurückgegeben werden (z. B. SELECT * FROM ...)

    Man sollte immer das SELECT einschränken, also SELECT spalte FROM ... WHERE schlüsselfeld=wert, oder die Rückgabemenge mit LIMIT begrenzen.

    [ Dieser Beitrag wurde am 05.02.2003 um 10:08 Uhr von F98 editiert. ]



  • Ich habe kein Tutorial dazu sondern mir alles selbst erarbeitet.
    Also ich habe eine Datasource mit einem Query verbunden.
    Das Query ist mit einer Database verbunden und die greift per Aliasname
    auf die ODBC zu.
    Um die Daten darzustellen benutze ich ein Datagrid, welches auf die Datasource
    verknüpft ist.

    Die Antwortzeiten in MySQL Front per Query Eingabe auf die DB sind schnell,
    aber in meinem Prog nicht

    Wo gibt es denn PREPARED ???



  • Beim Query-Objekt (zumindest bei den BDE- und ADO-Komponenten) gibt es die Eigenschaft namens Prepared. Wenn diese Eigenschaft auf TRUE gesetzt wird, dann wird die Ausführungsgeschwindigkeit erhöht.
    Ansonsten kann man bei den Datenzugriffs-Komponenten auch noch ein paar Sachen optimieren (z.B. nur lesender Zugriff oder die Cache-Grösse verändern)



  • Ich habe jetzt die Antwort !
    Hatte bei meiner Database Komponente die Eigenschaft
    Keep Connection auf FALSE gesetzt und do mußte
    die Verbindung zur DB bei jedem Statement neu aufgebaut
    werden. Wenn man die auf TRUE setzt, bleibt die Verbindung
    bestehen und die Zugriffe sind wieder so schnell wie sie
    vorher mal waren


Anmelden zum Antworten