Einzelnen Beitrag anzeigen

neo4a

Registriert seit: 22. Jan 2007
Ort: Ingolstadt
362 Beiträge
 
Delphi XE2 Architect
 
#19

Re: Mehrere DB-Verbindungen aus Dienst überfordern Firebird

  Alt 8. Mär 2009, 16:16
Auch wenn Du nur mit einem PC arbeitest, hast Du mit der Client-Applikation und dem Dienst praktisch eine Mehrbenutzerumgebung. Da greifen alle Gefahren bei der PrimaryKey (PK)- Ermittlung.

Wenn also Dein Dienst seine Transaktion nach dem Insert noch nicht beendet hat, wird die Applikation in dieser Zeit per SQL-Max() einen PK- Wert bekommen, der aber bereits vom Dienst verbraucht wurde. Das ist ein typisches Deathlock- Szenario, das man häufig nur durch Dienst-Neustart (und Datenverlust!) lösen kann.

Und weil ich so schön am Erklären bin: Genau die Transaktionen sind auch der Grund, weshalb gerade beim Import (also Mengen- Inserts) ein FB- Server in die Knie gezwungen werden kann. Hier macht ein erfahrener Programmierer nach einer Anzahl von Inserts (z.B 100 oder 1000) ein "Commit work;" und passt auf, das keine Transaktion länger dauert als nötig (Stichwort OAT - oldest active transaction).

Viel Erfolg.

--
Andreas
Andreas
  Mit Zitat antworten Zitat