![]() |
Datenbank: Firebird • Version: 3.0 • Zugriff über: IBDAC
Datenbank-Connection in mehreren Threads benutzen
Hallo,
Ich bin mir nicht ganz sicher wie das aussieht, aber kann/darf man folgendes machen: Eine Datenbank-Connection (TIBCConnection) die dauerthaft connected ist und von mehreren Threads folgendermaßen genutzt wird:
Delphi-Quellcode:
Reicht die Absicherung über Monitor.Enter und der Start einer neuen Transaktion oder ist das trotzdem nicht (Thread-)Safe?
MonitorEnter(Connection);
try Connection.StartTransaction(); try // Query finally Connection.Commit; end; finally MonitorExit(Connection); end; |
AW: Datenbank-Connection in mehreren Threads benutzen
Eigentlich soll das Multithreading ja helfen, mehere Dinge parallel laufen zu lassen. Lang laufende Datenbank-Abfragen z.B.
Durch das Lock per Monitor serialisierst du diese Abfragen aber wieder - dann kannst das Threading auch weglassen. Ergo: Funktioniert, macht aber außer größerem Aufwand genau null Sinn ;) |
AW: Datenbank-Connection in mehreren Threads benutzen
Mein Szenario ist in der Realität etwas komplexer/anders als nur mehrere Threads die ihre SQLs alle auf der gleichen Connection abfeuern.
Diese "Connection für alle" wird von jedem Thread nur 1x am Anfang genutzt, danach läuft jeder Thread unabhängig von dieser Connection und arbeitet an anderen Sachen. Aber ist eigentlich auch egal. Es geht nur darum ob das rein technisch ohne Probleme funktioniert oder ob ich da Probleme kriegen kann. |
AW: Datenbank-Connection in mehreren Threads benutzen
Hallo,
ich hatte damals "gelernt", dass die Connection einmal vorhanden sein soll, und pro Thread eine eigene/separate Transaktion gestartet werden soll. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:58 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 by Thomas Breitkreuz