![]() |
Datenbank: MySQL • Version: 5.0.6 • Zugriff über: ZEOS
Von diversen Threads SQL Abfragen auf eine MySQL Datenbank
Hi Leute,
ich schreibe gerade an einem Windows-Dienst, der als Middleware arbeitet. D.H. diverse Clients stellen an meinen Dienst anfragen, dieser verarbeitet die Anfragen in unterschiedlichen Threads, diese suchen das Ergebnis aus der DB(anderer Server), und liefern es aufbereitet an die Clients zurück. Zur Zeit verwende ich für den Zugriff auf die Datenbank-Komponenten von Zeos, allerdings scheint es bei den Zeos so zu seien, das sie extreme Probleme mit Multi-Thread Zugriff hat. Die gleichen Querys laufen mal durch mal nicht, meistens kommt die Fehlermeldung "Connection Lost during query". Jetzt meine Frage, hat jemand schonmal mit ähnlichen Problemen zu kämpfen ? Wie habt Ihr sie gelöst ? Desweiteren bin ich gerade dabei zu überlegen, ob ich anstatt der Zeos auf DirectSQL umsteige, was meint Ihr dazu ? |
Re: Von diversen Threads SQL Abfragen auf eine MySQL Datenba
Die besten Erfahrungsn habe ich mir mysql.pas gemacht (einfach mal hier im Forum nach suchen)
Gruss EL |
Re: Von diversen Threads SQL Abfragen auf eine MySQL Datenba
Zitat:
|
Re: Von diversen Threads SQL Abfragen auf eine MySQL Datenba
Hi,
es geht aber um einen Dienst, der keine Controls hat(gar keine GUI). Desweiteren habe ich nicht einen Thread, sondern N-Threads(Indy Tcp-Server). Also muss die Connection Global und Threadsave seien. Zeos packt das definitiv nicht ! DirectSQl probiere ich gerade, das sieht bis jetzt ganz gut aus. Gruß Data |
Re: Von diversen Threads SQL Abfragen auf eine MySQL Datenba
Hi,
für alle zur Info, erste Stress-Tests haben bis jetzt noch keiner Fehler ergeben, die Komponenten von : DirectMySQL : ![]() kann ich nur jedem ans Herz legen, vor allen weil die Performance anscheinend wesentlich besser ist als die von Zeos. Desweiteren ist der RAM Verbrauch im Vergleich zu den Zeos auch wesentlich geringer. Als einzige wichtige Information bleibt zu erwähnen, das es in der Unit "uMySqlClient" im Create der Klasse TMySqlClient, einen Schalter für die Thread-Sicherheit gibt.
Delphi-Quellcode:
Gruß Data
{$DEFINE HAVE_THREADSAFE} // wurde von mir jetzt hinzugefügt, um die Thread-Sicherheit zu gewährleisten.
{$IFDEF HAVE_THREADSAFE} if IsMultiThread then begin FCriticalSection:= TCriticalSection.Create; FThreaded:= true; end; {$ENDIF} |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:56 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz