Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Mehrere Threads eine Datenbanktabelle

11 views
Skip to first unread message

Matthias Frey

unread,
Jul 6, 2012, 5:57:25 AM7/6/12
to
Hallo,
ist es möglich aus einer Delphi-Applikation aus mehrere Threads
auf eine Tabelle zuzugreifen und dort Datensätze hinzuzufügen.

Falls ja, mit welchen Datenbanken geht so etwas?
Ich nehme an, dann benötigt jeder Thread eine eigene Connection.
Richtig?

Matthias

Arno Garrels

unread,
Jul 6, 2012, 12:06:24 PM7/6/12
to
Matthias Frey wrote:
> Hallo,
> ist es möglich aus einer Delphi-Applikation aus mehrere Threads
> auf eine Tabelle zuzugreifen und dort Datensätze hinzuzufügen.
>
> Falls ja, mit welchen Datenbanken geht so etwas?

Mit den Datenbanken, die ich bisher benutzt habe funktioniert das.

> Ich nehme an, dann benötigt jeder Thread eine eigene Connection.
> Richtig?

Eine Connection per Thread sollte natürlich immer funktionieren.
Die BDE und andere benötig(t)en z.B. für jeden Thread ein eigenes
Session-Objekt, im Zweifel immer die Hilfe der DB konsultieren.
Ob überhaupt und ggf. wann Multi-Threading (mehrere DB-Verbindungen)
einen Performance-Gewinn bringt kann ich nicht beantworten, hat
mich bisher noch nie interessiert.

--
Arno Garrels

Stefan Graf

unread,
Jul 6, 2012, 12:03:42 PM7/6/12
to
Genau, daher auch darauf achten, dass man damit keine Deadlooks baut.
Bei Änderung immer mit Transaktionen arbeiten.

--
Stefan Graf


Matthias Frey

unread,
Jul 6, 2012, 12:24:09 PM7/6/12
to
Arno Garrels schrieb:
> Matthias Frey wrote:
>> Hallo,
>> ist es möglich aus einer Delphi-Applikation aus mehrere Threads
>> auf eine Tabelle zuzugreifen und dort Datensätze hinzuzufügen.
>>
>> Falls ja, mit welchen Datenbanken geht so etwas?
>
> Mit den Datenbanken, die ich bisher benutzt habe funktioniert das.

Welche waren das?

>> Ich nehme an, dann benötigt jeder Thread eine eigene Connection.
>> Richtig?
>
> Eine Connection per Thread sollte natürlich immer funktionieren.
> Die BDE und andere benötig(t)en z.B. für jeden Thread ein eigenes
> Session-Objekt, im Zweifel immer die Hilfe der DB konsultieren.

Die BDE ist zum Glück kein Thema.

> Ob überhaupt und ggf. wann Multi-Threading (mehrere DB-Verbindungen)
> einen Performance-Gewinn bringt kann ich nicht beantworten, hat
> mich bisher noch nie interessiert.

Es geht nicht um Performance (sondern um mehere Maschinen die
Ergebnisse in eine Datenbank bringen).

Danke - auch an Stefan

Matthias


Arno Garrels

unread,
Jul 8, 2012, 8:29:55 AM7/8/12
to
Matthias Frey wrote:
> Arno Garrels schrieb:
>> Matthias Frey wrote:
>>> Hallo,
>>> ist es möglich aus einer Delphi-Applikation aus mehrere Threads
>>> auf eine Tabelle zuzugreifen und dort Datensätze hinzuzufügen.
>>>
>>> Falls ja, mit welchen Datenbanken geht so etwas?
>>
>> Mit den Datenbanken, die ich bisher benutzt habe funktioniert das.
>
> Welche waren das?

Mit Firebird, DBISAM, AbsoluteDB und der BDE/Paradox hab ich
schon von mehreren Threads auf die selben Tabellen zugriffen, an die
Details kann ich mich aber nicht mehr erinneren.
Deshalb habe das gerade nochmal mit DBISAM getestet, Transaktionen
werden z.B. mit DBISAM serialisiert, der Aufruf von DB.StartTransaction
kehrt erst zurück, wenn sich kein anderer Thread in einer Transaktion
befindet.

--
Arno Garrels
0 new messages