AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Stored procedure thread-safe
Thema durchsuchen
Ansicht
Themen-Optionen

Stored procedure thread-safe

Ein Thema von Der Jan · begonnen am 9. Jan 2006 · letzter Beitrag vom 9. Jan 2006
Antwort Antwort
Benutzerbild von Der Jan
Der Jan

Registriert seit: 22. Dez 2005
289 Beiträge
 
Delphi XE7 Ultimate
 
#1

Stored procedure thread-safe

  Alt 9. Jan 2006, 10:48
Datenbank: Firebird • Version: 1.5 • Zugriff über: -
Hallo zusammen,

tja, wie der Titel sagt Mich würde interessieren, ob SPs unter FB thread-safe sind. Also im Prinzip so: Ein User ruft eine SP auf, ein anderer ruft die selbe SP auf, bevor die erste abgearbeitet ist. Wird jetzt die erste erst fertig abgearbeitet oder gibt es hier auch eine Art Multi-Threading? Hab zwar schon die FB-Refetenz gewälzt, aber nix passendes gefunden.
Gruß, Jan
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Stored procedure thread-safe

  Alt 9. Jan 2006, 11:03
Sollte schon sein, da für jeder Datenbankverbindung beim Superserver (Windows) auf Serverseite ein eigener Thread verwendet wird. Beim Classic Server (Linux) wird sogar ein eigener Proccess verwendet.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Der Jan
Der Jan

Registriert seit: 22. Dez 2005
289 Beiträge
 
Delphi XE7 Ultimate
 
#3

Re: Stored procedure thread-safe

  Alt 9. Jan 2006, 11:16
War vielleicht bissel unglücklich formuliert... Aber wenn jede Connection ihren eigenen Thread hat, dann kann es doch sein, das die Abarbeitung von Thread1/SP unterbrochen wird und die SP in Thread2 abgearbeitet wird? Vielleicht steht auch nur gerade jemand auf meiner Leitung und ich verstehs einfach nicht
Gruß, Jan
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.381 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Stored procedure thread-safe

  Alt 9. Jan 2006, 11:37
Hi,

wenn SP1 abgebrochen wird, kann doch SP2 ohne Probleme weiter laufen, denn beide sind innerhalb einer Transaktion und kommen sich daher erst mal nicht in die Quere. Erst wenn beide auf denselben Datensatz zugreifen kann es "kritisch" werden, da dann evtl. ein Deadlockfehler (je nach Transaktionsparameter) kommt. Die Daten werden in jedem Fall nicht beschädigt!

Lemmy
  Mit Zitat antworten Zitat
Benutzerbild von Der Jan
Der Jan

Registriert seit: 22. Dez 2005
289 Beiträge
 
Delphi XE7 Ultimate
 
#5

Re: Stored procedure thread-safe

  Alt 9. Jan 2006, 11:58
Zitat von Lemmy:
Erst wenn beide auf denselben Datensatz zugreifen kann es "kritisch" werden, da dann evtl. ein Deadlockfehler (je nach Transaktionsparameter) kommt. Die Daten werden in jedem Fall nicht beschädigt!
Lemmy
Genau da liegt das Problem. Sie greifen auf den selben Datensatz zu. Die SP berechnet eine Auftragsnummer. Diese ist jedoch nicht einfach INT, sondern ein bissel komplizierter aufgebaut. Jetzt habe ich in einer Tabelle mehrere Variablen gespeichert. (Jaaa, ich weiß, ist nicht so die feine Art, aber bequem ) Unter anderem die letzte Auftragsnummer. Wird die SP aufgerufen, liest sie Nummer und errechnet daraus die nächste Nummer, speichert sie wieder und gibt die Nummer auch zurück. Wenn also die SP unterbrochen wird, könnte es zu Unstimmigkeiten kommen..
Gruß, Jan
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Stored procedure thread-safe

  Alt 9. Jan 2006, 12:04
Da unterscheidet sich eien SP nicht von einem normalen Query. Wenn die Transaktionseinstellungen nicht geradee auf dirty-read stehen., siht SP2 die Änderungen von SP1 nicht. Auf den selber Datensatz kann normalerweise nicht zugegriffen werden. ( SP2 wird normalerweise angehalten bis SP1 beendet ist). Das einzige Problem das ih sehe ist das es zu deadlocks kommen kann, wenn die Timeout-Einstellungen zu groß gewählt sind.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.351 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Stored procedure thread-safe

  Alt 9. Jan 2006, 12:04
Hi,

ich hole mir die Nummern auch immer über eine SP.
Das ganze wird in einer Wait Transaction gekapselt. Such mal nach LockWait oder so in der Transaction.

Cu, Frank
Frank Reim
  Mit Zitat antworten Zitat
Quake

Registriert seit: 25. Aug 2003
222 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Stored procedure thread-safe

  Alt 9. Jan 2006, 12:16
Habe ich das richtig verstanden, die liest den letzen Datensatz, schaust dir die letzte Auftragsnummer an und addierst dann eins drauf um die neue Auftragsnummer zu erhalten???
  Mit Zitat antworten Zitat
Benutzerbild von Der Jan
Der Jan

Registriert seit: 22. Dez 2005
289 Beiträge
 
Delphi XE7 Ultimate
 
#9

Re: Stored procedure thread-safe

  Alt 9. Jan 2006, 12:23
Zitat von Quake:
Habe ich das richtig verstanden, die liest den letzen Datensatz, schaust dir die letzte Auftragsnummer an und addierst dann eins drauf um die neue Auftragsnummer zu erhalten???
Nein Wäre es so einfach, hätte ich das über Autozähler (Generator/Trigger, kennt man ja) gemacht. Die Berechnung ist nicht ganz so trivial.

Zitat von dataspider:
Das ganze wird in einer Wait Transaction gekapselt. Such mal nach LockWait oder so in der Transaction.
Cu, Frank
Das werd ich mal tun
Gruß, Jan
  Mit Zitat antworten Zitat
Antwort Antwort


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 02: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