AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi möglichst kurze Transaktionen
Thema durchsuchen
Ansicht
Themen-Optionen

möglichst kurze Transaktionen

Ein Thema von Hansa · begonnen am 22. Aug 2003 · letzter Beitrag vom 27. Aug 2003
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von kiar
kiar

Registriert seit: 2. Aug 2003
Ort: Aschersleben
1.362 Beiträge
 
Delphi 5 Professional
 
#11

Re: möglichst kurze Transaktionen

  Alt 24. Aug 2003, 19:06
hallo hansa

folgender lösungsvorschlag:
start transaction lesen aller notwendigen daten commit

in deinem clienten alle eingaben machen
start transaction update aller notwendigen daten commit
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#12

Re: möglichst kurze Transaktionen

  Alt 24. Aug 2003, 20:24
Ich kann doch nicht 20.000 Datensätze lesen, wenn ich nur 5 tatsächlich brauche. Angeblich geht das parallel. Bei der lesenden kann ich ruhig mal Kaffee trinken gehen, die schreibende wird auf einen Schlag ausgeführt. Deshalb die Frage, macht das jemand so in der Richtung
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von kiar
kiar

Registriert seit: 2. Aug 2003
Ort: Aschersleben
1.362 Beiträge
 
Delphi 5 Professional
 
#13

Re: möglichst kurze Transaktionen

  Alt 24. Aug 2003, 20:37
mit sfw block brauchst du ja nur die datensätze zu holen die du brauchst.ich kann deinen einwand nicht verstehen. wenn du 5 datensätze brauchst holst du nur 5
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#14

Re: möglichst kurze Transaktionen

  Alt 24. Aug 2003, 20:54
Ich brauche einen, dann vielleicht noch einen. Ist alles erfaßt, dann speichere ich alles ab. Vielleicht werden es aber doch 100, und ich bin eine Stunde am Erfassen, wer weiß Die Transaktion wäre dann auch solange aktiv. Wie soll ich das verkürzen? Wie macht ihr so was denn ?
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von kiar
kiar

Registriert seit: 2. Aug 2003
Ort: Aschersleben
1.362 Beiträge
 
Delphi 5 Professional
 
#15

Re: möglichst kurze Transaktionen

  Alt 24. Aug 2003, 21:03
hallo hansa an bei ein tut über sql.

dies solltest du durcharbeiten, denn was du mit deinem programm machen willst ist von aussen schlecht einzusehen. ich denke dieser link
http://www.w3schools.com/sql/default.asp sollte dir helfen.

viel spass bei sql
  Mit Zitat antworten Zitat
urs.liska

Registriert seit: 6. Aug 2003
Ort: Freiburg
195 Beiträge
 
Delphi 6 Professional
 
#16

Re: möglichst kurze Transaktionen

  Alt 25. Aug 2003, 00:38
Mein Vorschlag zu einem Transaktionsmodell wäre:
Jedesmal, wenn Du einen Artikel in die Rechnung einfügst, brauchst Du eine kurze Transaktion, die eben diesen Artikel einliest, die dann aber auch wieder beendet werden kann.
Und am Schluss nochmal eine kurze Transaktion zum Schreiben.
Natürlich musst Du damit rechnen, dass in der Zwischenzeit jemand anderes den Lagerbestand geändert hat, d.h. Du musst beim Schreiben diese Möglichkeit mit einbeziehen und evtl. darauf reagieren. Aber bei einer langen Transaktion gibt es dieses Risiko natürlich auch, daher ist es kein Argument gegen das von mir vorgeschlagene Modell. Und ich denke, das ist der "übliche" Weg, ganz unabhängig von den verwendeten Komponenten.

Grüße
Urs
  Mit Zitat antworten Zitat
Benutzerbild von harrybo
harrybo

Registriert seit: 26. Nov 2002
Ort: Aachen
87 Beiträge
 
Delphi 6 Enterprise
 
#17

Re: möglichst kurze Transaktionen

  Alt 27. Aug 2003, 15:21
Hi Hansa,

um Deine Frage zu beantworten "macht das jemand so in der Richtung?": ich mache das so, bei einem etwas zurückliegenden Projekt sogar ausschließlich. Auf Transaktionen muss ich ja hier nicht mehr eingehen, die wurden ausführlich behandelt. Allerdings nur schnell mal commiten reicht bei Interbase/Firebird auch nicht ganz, wenn Du mit datensensitiven Kompos wie DBGrid o.ä. arbeitest - die sind dann nämlich augenblicklich leergefegt, da Commit sämtliche über die Transaktion laufenden Datasets etc. schließt. Man müsste also sämtliche offen gewesenen Datenmenge neu öffnen (in Mehrbenutzerumgebungen teilweise kein Manko, da erwünscht).

Meine Lösung war tatsächlich der Einsatz zweier Transaktionen mit folgenden Aufgaben:
  • Transaktion 1 zum Lesen, solange ein Fenster, bzw. die Datensicht offen ist. Das automatische Schreiben der benutzten datensensitiven Komponenten wird abgefangen und unterbunden, stattdessen wird ein SQL String erzeugt und an die
    Transaktion 2 zum Schreiben (Insert, Update) geschickt.
Großer Vorteil hierbei: Das Schreiben lasse ich eben nicht DBGrid, bzw. DBEdit machen, sondern verwende ausschließlich SQL über die entsprechende Komponente, die über Transaktion 2 läuft, was schneller nicht geht. Diese Transaktion "lebt" tatsächlich nur für die Dauer des Schreibens. Nach dem Schreiben lese ich die über Transaktion 1 offenen Datasets neu ein, damit die Änderungen auch sichtbar werden. Vor diesem Requery werden sämtliche Datenanzeigen mit Dataset.DisableControls eingefroren, um Flickern zu verhindern, abschließend werden die Anzeigen mit Dataset.EnableControls wieder freigegeben.

Gruß harrybo
Harry Boldt
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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