AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Firebird aus Thread heraus...

Firebird aus Thread heraus...

Ein Thema von ralfiii · begonnen am 15. Nov 2007 · letzter Beitrag vom 16. Nov 2007
Antwort Antwort
Benutzerbild von ralfiii
ralfiii

Registriert seit: 30. Mai 2007
489 Beiträge
 
Delphi 2010 Professional
 
#1

Firebird aus Thread heraus...

  Alt 15. Nov 2007, 16:20
Datenbank: Firebird • Version: 2.0 • Zugriff über: IBX - Interbase Express
Hallo!

Ich möchte (naja, ich muss) bei einer Anwendung aus mehreren Threads auf eine Firebird-datenbank zugreifen.
Was sollte man da performance-mässig beachten?

Die Anwendung ist ein Windows-Service das einen TCP-Server laufen hat. Bei jeder eingehenden Vebindung (etwa 1.000 bis 10.000 pro Stunde) muss sie kurz mal was in einer Firebird-Datenbank auslesen und eintragen.
(Es ist immer die gleiche Datenbank)

Es macht vermutlich sinn die Datenbank mal im Hauptthread zu öffnen, oder?
Sollten dann die Threads über Semaphore auf die Datenbank zugreifen?
Sind die IBX-Komponenten überhaupt threadsicher?
Oder sollte jeder Thread selber eine DB-Verbindung aufmachen?

Vielen Dank für eventuelle Tipps,
Ralf
  Mit Zitat antworten Zitat
Niko

Registriert seit: 23. Jun 2003
416 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Firebird aus Thread heraus...

  Alt 16. Nov 2007, 15:08
Hi,

ich gehe mal davon aus, dass du pro Anfrage einen Thread erzeugst oder wiederverwendest. Von einer einzelnen Verbindung und entsprechender Synchronistation in der Anwendung die dafür sorgt, dass immer nur ein Thread auf die Verbindung zugreift, würde ich auf jeden Fall abraten. Das Transaktionssystem des Datenbankservers kann solche parallelen Anfragen im Allgemeine viel effizienter koordinieren.

Wenn jeder Thread nur sehr wenige einfache Anfragen stellt könnte es allerdings passieren, dass der Verbindungsauf- und abbau mehr Ressourcen verbraucht, als die eigentlichen Anfragen, weshalb ich einen Verbindungspool vorschlagen würde, in dem einmal geöffnete Verbindungen zwischengespeichert und bei Bedarf wiederverwendet werden. Ich kenne mich mit IBX nicht aus, aber eventuell bieten die Komponenten bereits eine solche Möglichkeit. Falls du einen Threadpool verwendest liese sich das natürlich auch damit kombinieren, in dem jeder Thread seine Verbindung offen hält solange er sich im Pool befindet.
"Electricity is actually made up of extremely tiny particles called electrons, that you cannot see with the naked eye unless you have been drinking." (Dave Barry)
  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 +1. Es ist jetzt 06:58 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