AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Firebird Transaction lange offen

Firebird Transaction lange offen

Ein Thema von Gruber_Hans_12345 · begonnen am 6. Okt 2015 · letzter Beitrag vom 7. Okt 2015
Antwort Antwort
Seite 1 von 3  1 23   
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.341 Beiträge
 
Delphi 2007 Professional
 
#1

Firebird Transaction lange offen

  Alt 6. Okt 2015, 18:39
Datenbank: Firebird • Version: 2.5 • Zugriff über: IBX
Hallo

Ich wollte mal fragen, mit welchen Parametern ist es sinnvoll eine Transaktion zu starten die nur lesen ist, aber dafür sehr lange offen sein kann.
Speziell für Auswertungen eben (Reports, Pivot usw)

Ich möchte damit eben mein System nicht verlangsamen, meine schreibenden und sonstigen Transactionen sind immer extrem kurz, nur eben diese können teils auch mal tage offen beleiben (sollte nicht sein, aber es kann passieren)

Zugriff ist noch per IBX

besten danke
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.570 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#2

AW: Firebird Transaction lange offen

  Alt 6. Okt 2015, 19:00
Warum muss dann die Transaktion tagelang offen bleiben?
Markus Kinzler
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.341 Beiträge
 
Delphi 2007 Professional
 
#3

AW: Firebird Transaction lange offen

  Alt 7. Okt 2015, 05:37
müssen nicht aber es passiert halt

Das sind zum teil fremdkomponenten die auf die Datenbank zugreifen, und eben die Daten direkt aus der TIBQuery auslesen, und es muss bei IBX die Transaktion offen bleiben, sonst sind ja die Daten weg.

Daher müsste ich entweder eine zwischenschicht einführen, die die daten kopiert, oder die Komponente müsste sich die Daten selber kopieren.

Es handelt sich hier im Report Builder, und eine Pivot Komponente - und wenn der user eben die Fenster offen lässt bleibt auch die Transaktion offen.
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#4

AW: Firebird Transaction lange offen

  Alt 7. Okt 2015, 06:37
Ich vermute stark, du verwechselst hier was: Nicht die Transaktion bleibt offen, sondern das Query bleibt aktiv (Active = True). Die Transaktion kann gar nicht offenbleiben, nachdem die Daten via select von der Datenbank angefordert wurden und eingetroffen sind. Wäre die Transaktion noch offen, würde der Select-Befehl noch auf seine Ausführung warten.

Eine Query- oder Table-Komponente muß aktiv bleiben, solange die Daten angezeigt oder sonstwie verarbeitet werden sollen. Anders ausgedrückt: Wenn das Property Active der Datenmenge nicht mehr den Status True aufweist, besteht keine Möglichkeit, die Datenmenge zu verarbeiten. Erst das Setzen von Active auf True bzw. der Open-Befehl führt den Select-Befehl aus und beendet damit die Transaktion.

Geändert von Perlsau ( 7. Okt 2015 um 06:45 Uhr)
  Mit Zitat antworten Zitat
hstreicher

Registriert seit: 21. Nov 2009
207 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

AW: Firebird Transaction lange offen

  Alt 7. Okt 2015, 06:50
Die Antwort lautet :

Firebird hat dafür die "Read Only" Transaction

http://www.firebirdsql.org/refdocs/l...set-trans.html

http://de.slideshare.net/ibsurgeon/3...ansactionswork

mfg Hannes
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.570 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#6

AW: Firebird Transaction lange offen

  Alt 7. Okt 2015, 06:52
Ich würde die Daten clientseitig cachen.
Markus Kinzler
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.341 Beiträge
 
Delphi 2007 Professional
 
#7

AW: Firebird Transaction lange offen

  Alt 7. Okt 2015, 07:07
Ich vermute stark, du verwechselst hier was: Nicht die Transaktion bleibt offen, sondern das Query bleibt aktiv (Active = True). Die Transaktion kann gar nicht offenbleiben, nachdem die Daten via select von der Datenbank angefordert wurden und eingetroffen sind. Wäre die Transaktion noch offen, würde der Select-Befehl noch auf seine Ausführung warten.

Eine Query- oder Table-Komponente muß aktiv bleiben, solange die Daten angezeigt oder sonstwie verarbeitet werden sollen. Anders ausgedrückt: Wenn das Property Active der Datenmenge nicht mehr den Status True aufweist, besteht keine Möglichkeit, die Datenmenge zu verarbeiten. Erst das Setzen von Active auf True bzw. der Open-Befehl führt den Select-Befehl aus und beendet damit die Transaktion.
Meines wissens nicht

denn ich habe ja ne TIBQuery und ne TIBTransaction, und sobald ich die TIBTransaction schleiße sind auch die daten aller zugehörigen IBQuerys oder IBTables weg.
Und auch am Firebird Server kann ich mir ja die offenen Transaction anschauen und sehe, das es eigentlich so ist.

@mkinzler
Ja Clientseitig cachen ist ne möglichkeit, und mache ich bei meinen eigenen Sachen auch, nur für die Drittanbieter Software wird es halt um einige schwieriger, und aufwändiger, und ich erhoffte mir eine schneller und fast genau so gute lösung.

@hstreicher
Aber wenn eine Transaction READ ONLY ist, dann beudetet das ja nicht, das die Records nicht trotzdem Versioniert werden müssen solange die Transaction offen ist oder?
eventuell eine kombination mit READ COMMITTED oder [NO] RECORD_VERSION

nur ich will auf keinen Fall etwas verschlimmbessern
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.570 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#8

AW: Firebird Transaction lange offen

  Alt 7. Okt 2015, 07:11
Mit einem Clientdataset o.ä. sollte das kein Problem sein.
Markus Kinzler
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#9

AW: Firebird Transaction lange offen

  Alt 7. Okt 2015, 07:17
Meines wissens nicht, denn ich habe ja ne TIBQuery und ne TIBTransaction, und sobald ich die TIBTransaction schleiße sind auch die daten aller zugehörigen IBQuerys oder IBTables weg.
Mit "sobald ich die TIBTransaction schleiße" meinst du vermutlich, das Property Active der TIBTransaction auf False setzen? Die Komponente TIBTransaction ist nicht die Transaction, sondern verwaltet Transaktionen. Natürlich muß die Transaktions-Komponente so lange aktiv bleiben, wie die von ihr abhängigen Queries aktiv sind, damit sie auf Anforderungen reagieren kann.

Und auch am Firebird Server kann ich mir ja die offenen Transaction anschauen und sehe, das es eigentlich so ist.
Das würde mich jetzt interessieren: Wo genau siehst du am Firebird-Server die offenen Transaktionen?
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.341 Beiträge
 
Delphi 2007 Professional
 
#10

AW: Firebird Transaction lange offen

  Alt 7. Okt 2015, 07:20
Meines wissens nicht, denn ich habe ja ne TIBQuery und ne TIBTransaction, und sobald ich die TIBTransaction schleiße sind auch die daten aller zugehörigen IBQuerys oder IBTables weg.
Mit "sobald ich die TIBTransaction schleiße" meinst du vermutlich, das Property Active der TIBTransaction auf False setzen? Die Komponente TIBTransaction ist nicht die Transaction, sondern verwaltet Transaktionen. Natürlich muß die Transaktions-Komponente so lange aktiv bleiben, wie die von ihr abhängigen Queries aktiv sind, damit sie auf Anforderungen reagieren kann.

Und auch am Firebird Server kann ich mir ja die offenen Transaction anschauen und sehe, das es eigentlich so ist.
Das würde mich jetzt interessieren: Wo genau siehst du am Firebird-Server die offenen Transaktionen?
primitv so, (halt noch paar links dazu ... )

Code:
SELECT * FROM MON$TRANSACTIONS
ja meine wenn ich die TIBTransaktion.Active auf False setzte bzw. mit einem Transaction.Commit oder so, wenn ich ein CommitRetaining mache, dann bleiben daten erhalten, aber die Transaktion auch offen
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23   

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 12:17 Uhr.
Powered by vBulletin® Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2020 by Daniel R. Wolf