AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung Delphi FMX-FireDac "!" Fehler oder Feature?
Thema durchsuchen
Ansicht
Themen-Optionen

FMX-FireDac "!" Fehler oder Feature?

Ein Thema von Mavarik · begonnen am 17. Jun 2014 · letzter Beitrag vom 18. Jun 2014
Antwort Antwort
Seite 2 von 2     12   
Mikkey

Registriert seit: 5. Aug 2013
265 Beiträge
 
#11

AW: FMX-FireDac "!" Fehler oder Feature?

  Alt 17. Jun 2014, 16:59
Gerade auf IOS & Android geht es um Performance... Müssen die Parameter nicht alle wieder als ein SQL String zusammengebastelt werden damit dieser an den Treiber übergeben werden kann?
Nö, das ist ja gerade der Sinn, dass die Werte nicht aus dem SQL-String herausgeholt werden müssen.
Außerdem sehe ich da keinen Vorteil...
Naja, dieses(!) Problem hättest Du nicht gehabt
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.920 Beiträge
 
Delphi 10.4 Sydney
 
#12

AW: FMX-FireDac "!" Fehler oder Feature?

  Alt 17. Jun 2014, 17:04
Stichwort "Performance": Solltest Du gleich eine größere Anzahl an Werten haben, dann könntest Du die "Batch-Funktionalität"-FireDAC nutzen. Grob gesagt übergibst Du der FireDAC-Komponente ein mehrdimensionales Array an Werten und lässt sie dann machen. Gegenüber einzelnen Requests konnte ich da Performance-Steigerungen um den Faktor 10 (!) erzielen.

Details dazu unter:
http://docwiki.embarcadero.com/RADSt..._DML_(FireDAC).
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.197 Beiträge
 
Delphi 10.4 Sydney
 
#13

AW: FMX-FireDac "!" Fehler oder Feature?

  Alt 17. Jun 2014, 18:50
Gerade auf IOS & Android geht es um Performance... Müssen die Parameter nicht alle wieder als ein SQL String zusammengebastelt werden damit dieser an den Treiber übergeben werden kann?
Der Treiber muss gar nix zusammenbauen sondetn übergibt das parametrisierte Statement an die Db welche sich dann leichter tut das Statement abzuarbeiten. Nicht umsonst sind prepared Statement schneller als statements die ohne parameter arbeiten.

Zitat:
Außerdem sehe ich da keinen Vorteil...
Natives SQL "sollte" immer funktionieren...

Mavarik
Was ist natives Sql?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.143 Beiträge
 
Delphi 10.3 Rio
 
#14

AW: FMX-FireDac "!" Fehler oder Feature?

  Alt 18. Jun 2014, 03:47
Stichwort "Performance": Solltest Du gleich eine größere Anzahl an Werten haben, dann könntest Du die "Batch-Funktionalität"-FireDAC nutzen. Grob gesagt übergibst Du der FireDAC-Komponente ein mehrdimensionales Array an Werten und lässt sie dann machen. Gegenüber einzelnen Requests konnte ich da Performance-Steigerungen um den Faktor 10 (!) erzielen.

Details dazu unter:
http://docwiki.embarcadero.com/RADSt..._DML_(FireDAC).
Ja eben...

unter SQLite werden Parameter von FireDac nur emuliert.
und um aus einem String mit
SQL.Text := 'insert into Customers (ID, RegionID, Name, Note) values (:ID, :RegionID, :Name, :Note)';
wieder eine SQL Anweisung zu machen muss Firedac den String wieder zusammen bauen...
Weil die SQLite.dll nur SQL-Strings verarbeiten kann.

Übrigens ein
Delphi-Quellcode:
    SQLQuery.SQL.Text := 'BEGIN;';
    ...// inset 10000 Datensätze
    SQLQuery.SQL.Text := 'COMMIT;';

Hat zur Folge das erst alles in RAM kopiert wird und dann gebündelt an die DLL übergeben wird.
  Mit Zitat antworten Zitat
mquadrat

Registriert seit: 13. Feb 2004
1.113 Beiträge
 
Delphi XE2 Professional
 
#15

AW: FMX-FireDac "!" Fehler oder Feature?

  Alt 18. Jun 2014, 07:14
String-Operationen sind im Vergleich zu den ganzen grafischen Sachen und Animationen doch nicht wirklich teuer. Ich bezweifel, dass man da tatsächlich einen Geschwindigkeitsunterschied auf Android/iOS sieht. Wir verwenden in unserem Web-Framework auch RegExen und alle möglichen anderen String-Operationen (bei jedem Request) und erzielen trotzdem Geschwindigkeiten bei denen eine solche Pseudo-Optimierung schlicht nicht nötig ist.

Die meisten Projekte verwenden ja inzwischen ORMs und da wird IMHO auch immer mit Parametern gearbeitet. Noch dazu ist der ORM an sich ja noch mal eine Ebene der Indirektion, die Ressourcen benötigt.

Wir selber schreiben inzwischen nicht mal mehr die Queries, sondern nutzen einen Query-Builder mit Fluent-Interface, der ganz am Ende erst das parameterisierte Statement zusammenbaut.
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.920 Beiträge
 
Delphi 10.4 Sydney
 
#16

AW: FMX-FireDac "!" Fehler oder Feature?

  Alt 18. Jun 2014, 07:47
Frank, mach es so, wie Du Dich damit am besten fühlst.

Aber zwei Sachen kann man nicht stehen lassen, weil sie schlichtweg falsch sind:

unter SQLite werden Parameter von FireDac nur emuliert
Nein, weder einfache Parameter noch Array-Parameter werden emuliert. Einfache Parameter gehen immer und Array-Parameter gehen, wenn Du die Komponente entsprechend konfigurierst, indem Du die Eigenschaft "Params.BindMode" auf den Wert "pbByName" setzt. Seit iOS 6 (!) kommt SQLite in Version 3.7.13 daher und erfüllt damit die Voraussetzung für eine native Unterstützung von Array-Parametern.

Weil die SQLite.dll nur SQL-Strings verarbeiten kann
Ich bin durchaus froh, dass dem nicht so ist, denn sonst gäbe es ... sagen wir ... gewisse Probleme ... mit BLOB-Feldern.


Ich denke, es ist klar geworden, dass Du diesen Weg nicht gehen möchtest und das ist Dein gutes Recht.
Daniel R. Wolf
mit Grüßen aus Hamburg
  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 13:01 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