AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Datenbank-Connection in mehreren Threads benutzen

Datenbank-Connection in mehreren Threads benutzen

Ein Thema von Neutral General · begonnen am 19. Jul 2019 · letzter Beitrag vom 19. Jul 2019
Antwort Antwort
Benutzerbild von Neutral General
Neutral General
Online

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.165 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Datenbank-Connection in mehreren Threads benutzen

  Alt 19. Jul 2019, 11:02
Datenbank: Firebird • Version: 3.0 • Zugriff über: IBDAC
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:
MonitorEnter(Connection);
try
  Connection.StartTransaction();
  try
    // Query
  finally
    Connection.Commit;
  end;
finally
  MonitorExit(Connection);
end;
Reicht die Absicherung über Monitor.Enter und der Start einer neuen Transaktion oder ist das trotzdem nicht (Thread-)Safe?
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
OlafSt

Registriert seit: 2. Mär 2007
Ort: Hamburg
284 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

AW: Datenbank-Connection in mehreren Threads benutzen

  Alt 19. Jul 2019, 11:23
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
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General
Online

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.165 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

AW: Datenbank-Connection in mehreren Threads benutzen

  Alt 19. Jul 2019, 11:40
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.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
7.992 Beiträge
 
Delphi XE4 Professional
 
#4

AW: Datenbank-Connection in mehreren Threads benutzen

  Alt 19. Jul 2019, 11:49
Hallo,
ich hatte damals "gelernt", dass die Connection einmal vorhanden sein soll,
und pro Thread eine eigene/separate Transaktion gestartet werden soll.
Heiko
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 +2. Es ist jetzt 15:17 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf