AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Von diversen Threads SQL Abfragen auf eine MySQL Datenbank
Thema durchsuchen
Ansicht
Themen-Optionen

Von diversen Threads SQL Abfragen auf eine MySQL Datenbank

Ein Thema von DataCool · begonnen am 5. Nov 2005 · letzter Beitrag vom 7. Nov 2005
Antwort Antwort
Benutzerbild von DataCool
DataCool

Registriert seit: 10. Feb 2003
Ort: Lingen
909 Beiträge
 
Delphi 10.3 Rio
 
#1

Von diversen Threads SQL Abfragen auf eine MySQL Datenbank

  Alt 5. Nov 2005, 20:52
Datenbank: MySQL • Version: 5.0.6 • Zugriff über: ZEOS
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 ?
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.
  Mit Zitat antworten Zitat
Benutzerbild von emsländer
emsländer

Registriert seit: 21. Aug 2004
Ort: Lengerich
658 Beiträge
 
RAD-Studio 2009 Ent
 
#2

Re: Von diversen Threads SQL Abfragen auf eine MySQL Datenba

  Alt 5. Nov 2005, 21:33
Die besten Erfahrungsn habe ich mir mysql.pas gemacht (einfach mal hier im Forum nach suchen)


Gruss

EL


Narben am Körper sind ein Zeichen dafür, das man gelebt hat.
Narben auf der Seele sind ein Zeichen dafür, das man geliebt hat.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.201 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Von diversen Threads SQL Abfragen auf eine MySQL Datenba

  Alt 6. Nov 2005, 12:58
Zitat von DataCool:
Jetzt meine Frage, hat jemand schonmal mit ähnlichen Problemen zu kämpfen ? Wie habt Ihr sie gelöst ?
Das Problem ist ein Grunsätzliches Problem von VCL-Controls da diese nicht Thread-Save sind (Sprich: Zugriff auf ein Control von einem anderen Thread als dem wo das Control erzeugt wird ist nicht immer sicher). Ich denke dein Problem läßt sich lößen wenn auch deine Connection im Thread erzeugt wird.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von DataCool
DataCool

Registriert seit: 10. Feb 2003
Ort: Lingen
909 Beiträge
 
Delphi 10.3 Rio
 
#4

Re: Von diversen Threads SQL Abfragen auf eine MySQL Datenba

  Alt 6. Nov 2005, 19:48
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
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.
  Mit Zitat antworten Zitat
Benutzerbild von DataCool
DataCool

Registriert seit: 10. Feb 2003
Ort: Lingen
909 Beiträge
 
Delphi 10.3 Rio
 
#5

Re: Von diversen Threads SQL Abfragen auf eine MySQL Datenba

  Alt 7. Nov 2005, 15:10
Hi,

für alle zur Info, erste Stress-Tests haben bis jetzt noch keiner Fehler ergeben, die Komponenten von :

DirectMySQL :

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:
  {$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}
Gruß Data
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz