Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Firebird 1.5 - Transaction auf Wait setzen. Wie? (https://www.delphipraxis.net/116287-firebird-1-5-transaction-auf-wait-setzen-wie.html)

Eppos 26. Jun 2008 10:34

Datenbank: Firebird • Version: 1.5 • Zugriff über: BDE

Firebird 1.5 - Transaction auf Wait setzen. Wie?
 
Hallo zusammen,

bekomme immer häufiger die Fehlermeldung:

lock conflict on no wait transaction
deadlock
update conflicts with concurrent update.

Ich möchte jetzt die Transaction auf "WAIT" setzen.
Habe auch schon gegoogelt aber keine brauchbare möglichkeit gefunden.

Kann mir jemand sagen`, mit welchem befehl ich das ändern kann?

Vielen Dank!

mkinzler 26. Jun 2008 11:00

Re: Firebird 1.5 - Transaction auf Wait setzen. Wie?
 
Ist eine Einstellung der Transaktions-Isolation.

Eppos 26. Jun 2008 11:02

Re: Firebird 1.5 - Transaction auf Wait setzen. Wie?
 
d.h.?

Wo kann ich das Einstellen?

mkinzler 26. Jun 2008 12:48

Re: Firebird 1.5 - Transaction auf Wait setzen. Wie?
 
Bei der BDE äuft das afaik transparent.

Eppos 26. Jun 2008 13:22

Re: Firebird 1.5 - Transaction auf Wait setzen. Wie?
 
Ich habe jetzt die Delphi TDataBase Komponente auf "TransIsolation = tiRepeatableRead" gesetzt.

Geht das auch?

nachti1505 27. Jun 2008 08:49

Re: Firebird 1.5 - Transaction auf Wait setzen. Wie?
 
Klar geht das auch... die Isolationsstufe ist sogar noch "härter" als read-committed! Ob das dein WAIT jedoch ermöglicht, glaube ich nicht! Bei den UIB und bei FIBPlus kann man die Direktive WAIT/NOWAIT explizit setzen. Eventuell bietet TDatabase hier auch etwas zu an?

sx2008 28. Jun 2008 00:29

Re: Firebird 1.5 - Transaction auf Wait setzen. Wie?
 
Zitat:

Zitat von Eppos
Ich möchte jetzt die Transaction auf "WAIT" setzen.

Ich glaube nicht, dass das dein Problem lösen wird.
Du musst bei deinen Transactions immer eine feste Reihenfolge einhalten.
Angenommen du schreibst an einer Stelle zuerst in Tabelle A und dann noch in Tab B.
In einer anderen Stelle im Programm schreibst du in Tabelle B, dann in C und dann in A.
So kann dann ein Deadlock entstehen; vorallem dann wenn du zusätzlich bei Leseoperationen mit Select einen Tablock einsetzt.

bluesbear 28. Jun 2008 09:48

Re: Firebird 1.5 - Transaction auf Wait setzen. Wie?
 
Die BDE ist ziemlich buggy bei multi-user-applications. Es funktioniert meistens, aber manchmal nicht. Ich habe darauf verzichtet, das Problem zu ergründen. Ich habe drumherum programmiert.

dmagin 28. Jun 2008 11:01

Re: Firebird 1.5 - Transaction auf Wait setzen. Wie?
 
Hi @all,

transactions mit sql db's können recht komplex sein. gerade interbase/firebid haben da etliche kombinationsmöglichkeiten.
ich habe das ganze thema vor ein paar wochen in einem webinar behandelt.

es geht (meine ich jedenfalls) etwa 1,5 stunden. es ist kostenlos hier verfügbar : LINK

dort unter interbase schauen mit dem titel:

Understanding InterBase Transactions

In this session you learn the Transaction Handling with InterBase. Also some live demos with Delphi (you can use all techniques in other languages also) how to work in a perfect was between Client Applications and InterBase Server without having deadlocks, performance Problems, …



ist aber in english, ok mit deutschen dialekt :-)

viel spass

gruss daniel (magin)


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:48 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