AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Progress-Updates während einer Query
Thema durchsuchen
Ansicht
Themen-Optionen

Progress-Updates während einer Query

Ein Thema von Medium · begonnen am 15. Okt 2021 · letzter Beitrag vom 17. Okt 2021
Antwort Antwort
Medium

Registriert seit: 23. Jan 2008
3.687 Beiträge
 
Delphi 2007 Enterprise
 
#1

AW: Progress-Updates während einer Query

  Alt 15. Okt 2021, 16:32
Ähm ja, das wird dann deutlich zu langsam. Da ich das ganze eh nur ca. alle halbe Jahre mal machen muss, und den Vorgang gerade angestoßen habe damit er übers Wochenende (hoffentlich) fertig wird, lege ich das "Komfort-Vorhaben" mal ad acta.

Aber wundert mich schon, dass es da offenbar keine Standard-Schnittstelle gibt, über die SQL-Server einen Fortschritt an seine Clients senden kann. Manchmal hat man eben keine hübschen kurzen kleinen Statements, gerade bei so Wartungsläufen.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.314 Beiträge
 
Delphi 12 Athens
 
#2

AW: Progress-Updates während einer Query

  Alt 15. Okt 2021, 16:52
Mach es wie der Explorer beim Suchen.
* schätze wie lange ein Datensatz braucht
* multipliziere es mit der Anzahl
* dann tu so, als wäre die Anzeige real
** ist es früher fertig, dann den rest schnell vorspulen
** dauert es länger, dann die restlichen 5% extrem langsam laufen lassen
* und dann lass die Copy-Aufgabe komplett unabhängig vom Fortschritt laufen
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

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

AW: Progress-Updates während einer Query

  Alt 15. Okt 2021, 16:57
Also mit Fierebird hab ich das mal mit einer Procedure gemacht.
Ich habe einfach eine selectable SP geschrieben und in der Anwendung durchlaufen (select * from sp_name)
und dann mit while not Query.eof do...

Und in der Procedure dann halt zur Ausgabe (suspend) die Änderungen in den Daten mitgemacht.

Heute würde ich mich nicht mehr für sowas verbiegen, zumal es auch immer weniger perfomant ist.

Frank
Frank Reim
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#4

AW: Progress-Updates während einer Query

  Alt 15. Okt 2021, 23:25
Wenn sich das ausschließlich auf dem Server abspielt und Du nichts zerhacken willst, also eine vollständige Transaktion, dann wären autonome Transaktionen für Wasserstandsmeldungen hilfreich. Gibts bei Oracle und Postgres, weiter wüsste ich nicht.
Aber das Netz weiß mehr, hier eine Idee, die das ähnlich einer autonomen Transaktion durch eine andere Engine macht, für mySQL, vielleicht gibt es die Engine auch für Maria und es ist für den Einsatzzweck geeignet:
https://dba.stackexchange.com/questi...ction-in-mysql
Wahrscheinlich nur per SP, die selbst irgendwie stückelt bzw. einen Cursor über die gesamte Menge auf macht und Zwischenstände/Counter über die andere Engine wegschreibt.
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.314 Beiträge
 
Delphi 12 Athens
 
#5

AW: Progress-Updates während einer Query

  Alt 16. Okt 2021, 01:04
In Postgres gibt es die FOREIGN DATA WRAPPER (FDW) und DBLINK,
damit kann man Verbindungen zu anderen DBMS aufbauen, aber auch zum Eigenen und sogar zu/in sich selbst.

So kann man innerhalb eines Selects/Transaction parallel eine weitere Connection öffnen und dort z.B. ein INSERT/UPDATE oder ein NOTIFY absetzen, dessen Transaktion fertig wird, vor/während der Eigenen.

Somit lässt sich dann über ein weiteres SELECT der Status vom Client abfragen, oder eine Notification zum Client senden.
Über eine zusätzliche Connection im Client, weil die Erste hängt ja noch.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (16. Okt 2021 um 01:18 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von MyRealName
MyRealName

Registriert seit: 19. Okt 2003
Ort: Heilbronn
685 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Progress-Updates während einer Query

  Alt 17. Okt 2021, 10:27
einen INSERT-SELECT macht man ja um Daten auf dem Server zu kopieren und nicht den Client-PC zu involvieren. Von daher gibt es da wohl eher keine Status-Meldung.
Bei Firebird hätte ich da einige Idee wie zum Bsp. Session variablen, die im Trigger aktualisiert werden könnten und remote ausgelesen, aber bei Maria-DB habe ich leider keine Ahnung.
Könnte man vllt einen Copy Counter einführen, der eine autogenerierte ID ist, die man abfragen kann ? Also wo man den generator selbst fragt oder die letzte erzeugte ID ?
  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 06:55 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz