AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Ein möglichst schnelles TTransaction.Commit; (für Dummies)
Thema durchsuchen
Ansicht
Themen-Optionen

Ein möglichst schnelles TTransaction.Commit; (für Dummies)

Ein Thema von mojo777 · begonnen am 25. Aug 2004 · letzter Beitrag vom 28. Aug 2004
Antwort Antwort
mojo777

Registriert seit: 10. Sep 2003
402 Beiträge
 
#1

Ein möglichst schnelles TTransaction.Commit; (für Dummies)

  Alt 25. Aug 2004, 19:19
Hallo,

ich habe hier im Forum schon ein paar (sehr) theoretische Überlegungen zum Thema Commits und Datenbankauslastung lesen können. Jedoch hilft mir das irgendwie nicht viel weiter bei meinem Problem....
Ich habe eine Datenbank und würde gerne in bestimmten Zeitabständen oder auch auf Button1.Click() die veränderten Daten in die IB Datenbank speichern... MOmentan benutze ich nur eine(!) Transaction für alle Tabellen und bei dem Befehl .Commit dauert das äscht suppa lange...
Es gibt doch bestimmt bessere und vor Allem schnellere Möglichkeit....
Also ich kenne es z.b. aus EMS-Interbasemanager... Da geht das recht zügig...

Bin für jeden Tipp dankbar...!

Gruß
Mojo
Muh macht die kUh
  Mit Zitat antworten Zitat
Lemmy

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

Re: Ein möglichst schnelles TTransaction.Commit; (für Dummie

  Alt 26. Aug 2004, 07:08
Guten Morgen,

welche Version von IB wird eingesetzt? Wieviele Tabellen sind "alle Tabellen"? Um welche Datenmenge handelt es sich? Greifen mehrere Benutzer auf die Datenbank zu?

Grüße
Lemmy
  Mit Zitat antworten Zitat
mojo777

Registriert seit: 10. Sep 2003
402 Beiträge
 
#3

Re: Ein möglichst schnelles TTransaction.Commit; (für Dummie

  Alt 26. Aug 2004, 12:36
Hallo,

ich benutze ib6,
es sind ca. 10 tabellen,
anzahl der datensätze beläuft sich auf ca. 1000 bis 100.000...
also schon ernstzunehmende mengen...
und wenn ich die komplette transaction "commite" werden alle tabellen durchgegangen...

Gruüß
Mojo
Muh macht die kUh
  Mit Zitat antworten Zitat
Lemmy

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

Re: Ein möglichst schnelles TTransaction.Commit; (für Dummie

  Alt 26. Aug 2004, 14:35
Hi,

hast Du evtl. die Möglichkeit auf Firebird zu wechseln? Speziell in der 1.5 (im Vergleich zu IB 6.0x) hat sich einiges an der Performance getan. Zudem wird die OpenSource IB 6 (ich gehe davon jetzt einfach aus, dass Du diese hast) ja nicht mehr weiterentwickelt, was auch nicht besonders förderlich ist.

Verschiedene Transaktionen sind für verschiedene Themen durch aus interessant (z.B. Adresse - TransAdresse, Auftrag - TransAuftrag), jedoch kann es evtl. zu Problemen kommen, wenn verschiedene Themen untereinander verknüpft sind.

Wenn Du auf einen Schlag mehrere 1000 DS einfügen musst würde es sich anbieten nach einiger Zeit ein Commit zu machen. IBOConsole macht z.B. alle 10.000 DS ein COMMIT (beim Backup-REstore), allerdings geht das eigentlich ratz-fatz (zumindest bei mir).

Grundsätzlich kannst Du in deine Appl selbstverständlich nen Zähler (sei es ein Timer oder ein Zähler, der die Anzahl der DS seit dem letzten commit zählt) einbauen und dann ein Commit machen.

Mehr zu sagen geht aber nicht, da der Aufbau der Datenbank zu kennen (vorallem wenn Du alle 10 Tabellen in einer Trans bearbeiten musst) schon wichtig wäre.

Grüße
Lemmy
  Mit Zitat antworten Zitat
mojo777

Registriert seit: 10. Sep 2003
402 Beiträge
 
#5

Re: Ein möglichst schnelles TTransaction.Commit; (für Dummie

  Alt 26. Aug 2004, 19:46
Hallo,

das KOmische bei mir ist.... es ist egal wieviele Daten bei dem Commit in dier Db gestopft werden.... die Wartezeit übersteigt immer das wünschbare... ich muss maanchmal bis zu 20 sek warten.... muh...
Kann das denn sein, dass ein paar tabellen calcby (und lookup etc..) felder haben und diese nach dem commit neuberechnet werden? ich kann ja noch versuchen das komplette programm auf sql umzustellen... aber bevor ich das machen würde ich gerne wissen, ob es in diesem sinne was bringt..

Viele Grüße!

Mojo
Muh macht die kUh
  Mit Zitat antworten Zitat
Lemmy

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

Re: Ein möglichst schnelles TTransaction.Commit; (für Dummie

  Alt 27. Aug 2004, 06:50
Guten Morgen,

was heißt hier "auf SQL umstellen"??? Soll das heißen Du arbeitest mit TIBTable??

Grüße
Lemmy
  Mit Zitat antworten Zitat
mojo777

Registriert seit: 10. Sep 2003
402 Beiträge
 
#7

Re: Ein möglichst schnelles TTransaction.Commit; (für Dummie

  Alt 27. Aug 2004, 10:17
jupp
Muh macht die kUh
  Mit Zitat antworten Zitat
Lemmy

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

Re: Ein möglichst schnelles TTransaction.Commit; (für Dummie

  Alt 27. Aug 2004, 11:05


Ich empfehle Dir mal die Tutorials auf meiner Seite zu Interbase/Firebird, IBX, Transactionen usw. durchzulesen.

TIBTable und TIBQuery sind vom Programmierer nur aus Kompatibilitätsgründen erzeugt worden, d.h. die sind nicht alltagstauglich!!!
Ein SQL-Server ist komplett anders als eine Desktop-DB! Wenn Du TIBTable verwendest läd der beim öffnen ALLE Datensätze vom Server zum Client (egal ob der Server auf dem selben PC sitzt!) und deshalb dauert das mit dem Einfügen auch ne Ewigkeit!

Bau Deine Appl auf die Verwendung von TIBDataSet um, verwende schlanke SQL-Statements (d.h. keine Select * from Tabelle) und eine sinnvolle Transaktionsverwaltung.

Wenn Du dazu Hilfestellung benötigst kannst Du dich ruhig an mich wenden, allerdings brauche ich dann ein Modell der DB.

Grüße
Lemmy
  Mit Zitat antworten Zitat
mojo777

Registriert seit: 10. Sep 2003
402 Beiträge
 
#9

Re: Ein möglichst schnelles TTransaction.Commit; (für Dummie

  Alt 27. Aug 2004, 16:26

hallo,

äähhm also das habe ich vorher zwar geahnt aber.... das das auch bei transactions zieht..!
wird denn auch die gesamt db bei IBQuery ausgelesen?
ich habe mich eigentlich auch da bemüht die select abfragen schlank zu halten.. aber wenn du meinst, dass das nix bringt...

Vielen dank für die "Tipps". Werde mir dies auf jeden Fall zu Herzen nehmen...

Gruß

Mojo
Muh macht die kUh
  Mit Zitat antworten Zitat
Lemmy

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

Re: Ein möglichst schnelles TTransaction.Commit; (für Dummie

  Alt 28. Aug 2004, 07:46
Hi,


wie gesagt hat der Autor Jeff Overcash mehrfach betont, dass diese beiden Komponenten nur aus Kompatibilitätsgründen mit dabei sind. Ich denke selbst bei schlanken SQL wirst Du mit TIBSQL bzw. TIBDataSet besser bedient sein.

Grüße
Lemmy
  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 00:02 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