ZeosLib 7.2-Beta wurde veröffentlicht.

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
EgonHugeist
Beiträge: 93
Registriert: Di 17. Apr 2012, 22:41

ZeosLib 7.2-Beta wurde veröffentlicht.

Beitrag von EgonHugeist »

Hallo Zeos-Freunde,

gestern haben wir die erste offizielle Beta-Version von ZeosLib 7.2 veröffentlicht.
Download für SVN unkundige: http://sourceforge.net/projects/zeoslib ... p/download

Ich habe 'ne Menge für bessere Performance machen können, auch wenn noch nicht die Spitze des Eisbergs erreicht ist -> da geht noch mehr(ArrayBindings(geht schon im Dbc-Layer)->7.3).

Ich hoffe ihr testet mit?! Bei Risiken oder Nebenwirkung fragen Sie bitte im Zeos-Forum! :lol:

Viel Spaß, Michael

P.S. es wäre interessant, wenn jamand mal die Zeos-TestSuite Performance tests mit SQLDB upgraded, um Vergleiche zu bekommen... :wink:
ZeosDevTeam

MmVisual
Beiträge: 1581
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
CPU-Target: 32/64Bit

Re: ZeosLib 7.2-Beta wurde veröffentlicht.

Beitrag von MmVisual »

Vielen Dank!
Hab es gerade mal installiert und ein wenig getestet. Hut ab!!! Der Export der Datenbank in SQLITE ist nahezu doppelt so schnell :D 7.1.3: 13,6Sec, 7.2Beta: 7,6Sec
Bei MsSQL werden die Umlaute nicht korrekt dargestellt. Bei 7.1.3 hat das noch funktioniert.
Wenn Du magst, kannst Du das per TeamViewer bei mir anschauen.
Grüße Markus.
EleLa - Elektronik Lagerverwaltung - www.elela.de

EgonHugeist
Beiträge: 93
Registriert: Di 17. Apr 2012, 22:41

Re: ZeosLib 7.2-Beta wurde veröffentlicht.

Beitrag von EgonHugeist »

Danke Markus für dein FeedBack!

Denke wir schauen mal rein.. Melde mich per eMail, wenns paßt..
ZeosDevTeam

EgonHugeist
Beiträge: 93
Registriert: Di 17. Apr 2012, 22:41

Re: ZeosLib 7.2-Beta wurde veröffentlicht.

Beitrag von EgonHugeist »

Ach noch eins.. SQLite Power tuning:

Wenn du dir sicher bist SQLite nicht in einem MultiUser-Betrieb zu nutzen, füge folgende Parameter zur TZConnection.Properies-Liste hinzu:

Code: Alles auswählen

 
'synchronous=0'
'locking_mode=EXCLUSIVE'
 
siehe http://www.sqlite.org/pragma.html

Arbeite !nicht! im AutoCommit-Modus, dann schüttelt SQLite fast alle anderen ab.. :shock: Bin mir sicher deine gannante 7.2-Zeit geht noch weiter in die Knie..

Edit: und lernen, wie der DBC-Layer funzt, würde die Permormance nochmal halbieren(TDataSet-Performance-Problem): siehe http://synopse.info/forum/viewtopic.php?id=1508&p=3
Ich habe UniDac & FireDac um Längen geschlagen. FYI die im Link gezeigten Resultate werden gegen ColumnsToJSON getestet. Wenn ich mal die Zeit habe werde ich bei Synopse ein paar Änderungen einfügen -> zu erwartender Boost-Faktor ca. 180%
ZeosDevTeam

MmVisual
Beiträge: 1581
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
CPU-Target: 32/64Bit

Re: ZeosLib 7.2-Beta wurde veröffentlicht.

Beitrag von MmVisual »

Der Parameter hat bei mir nichts gebracht. Ich habe schon vorher SQLite damit gefüttert: 'BEGIN EXCLUSIVE TRANSACTION' damit ist SQLite richtig schnell.
Für den Backup eines SQL Servers gibt es ohnehin keinen zweiten zeitgleichen Zugriff auf die Sicherungs SQLite Datei. (Ich mache einen Backup von MySQL/PostgreSQL/MsSQL in eine SQLite Datei, und mein Programm kann somit auch direkt diese Sicherung öffnen :wink: )
EleLa - Elektronik Lagerverwaltung - www.elela.de

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: ZeosLib 7.2-Beta wurde veröffentlicht.

Beitrag von Michl »

Hallo EgonHugeist,

vielen Dank für die Info und vor allem für die geleistete Arbeit! Ich nutze Zeos (seit einiger Zeit 7.2 alpha) aktiv für die Entwicklung und bin sehr zufrieden :)

Bei SqlDB scheinen sich zur Zeit die Entwickler rar zu machen, umso schöner, dass Ihr (Du) so aktiv an Zeos feilt! Leider bin ich gerade eine Weile unterwegs und kann daher keine Tests zu den leten Neuerungen machen, werde das dann aber später nachholen.

Auf jeden Fall nochmal ein fettes Danke von mir, macht weiter so!

Viele Grüße

Michael

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

EgonHugeist
Beiträge: 93
Registriert: Di 17. Apr 2012, 22:41

Re: ZeosLib 7.2-Beta wurde veröffentlicht.

Beitrag von EgonHugeist »

Danke fürs Feedback.

@MMVisual Patch done R3427 \testing-7.2. Wer nochmals in das Problem läuft, jedoch SVN unkundig ist: TZConnection.AutoEncodeStrings := True. Und alles ist fein.
ZeosDevTeam

nyjo
Beiträge: 3
Registriert: Mo 10. Nov 2008, 15:04

Re: ZeosLib 7.2-Beta wurde veröffentlicht.

Beitrag von nyjo »

Hallo,

super Arbeit :-) Ich nutze ZeosLib in Verbindung mit einer ORACLE DB 11.2. Performance hat sich mehr als verdoppelt (gefühlt)!
Mein Respekt :D

mfg
Nyenhuis

EgonHugeist
Beiträge: 93
Registriert: Di 17. Apr 2012, 22:41

Re: ZeosLib 7.2-Beta wurde veröffentlicht.

Beitrag von EgonHugeist »

@nyjo,

ich würde behaupten noch schneller by default!
Für Oracle ist auch etwas in der Performance Trickkiste:

Folgende TZDataSet.Properties-Parameter kannst du für das schnellere holen der Daten benutzen:

Code: Alles auswählen

 
'row_prefetch_size=X'
'internal_buffer_size=X'
 
row_prefetch_size indiziert wieviel Speicher(in Bytes) pro öffnen eines ResultSets, du bereit bist vom Server-System zu verwenden/Abzutreten.
internal_buffer_size indiziert Zeos, wieviel Speicher du in gleicher weise auf Client-Seite bereit bist abszutreten, jedoch dient dieser Parameter auch zum errechnen wieviele Row-Manipulationen(Insert/Edit etc) pro Round-Trip ausgeführt werden können, siehe Array-Bindings, die Zeos intern schon kann.

Beide Parameter stehen by default auf 128KB.
Solltest du sehr große Mengen an Daten holen wollen, erhöhe beide Parameter! Oder verkleinere sie, wenn Zeos und Oracle zu viel Speicher fressen (sollte nur möglich sein, wenn du 'ne unglaubliche Menge an Tables gleichzeitig geöffnet hast).

Ich mache dann folgendes: Kalkuliere den Speicher für eine Row. Dann hole ich nicht nur eine Row/Fetch, sondern soviele, wie in den alloziierten Speicher passen mit EINEM call! Danach renne ich die ROWS nur noch intern durch. Letzte Zeile erreicht -> hole wieder x rows/fetch. Echt super, was Oracle da bietet, da jeder Call mit call-convetions ein Performance drop darstellt.

Beachte row_prefetch_size sollte im >= internal_buffer_size sein, um die optimal Performance zu erziehlen.
ZeosDevTeam

MmVisual
Beiträge: 1581
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
CPU-Target: 32/64Bit

Re: ZeosLib 7.2-Beta wurde veröffentlicht.

Beitrag von MmVisual »

Hallo Michael.
Mit Lazarus 64 Bit und SQLite gibt es noch ein Problem. Wenn Du Zeit hast kannst Du Dich bei mir melden.
Grüße Markus.
EleLa - Elektronik Lagerverwaltung - www.elela.de

EgonHugeist
Beiträge: 93
Registriert: Di 17. Apr 2012, 22:41

Re: ZeosLib 7.2-Beta wurde veröffentlicht.

Beitrag von EgonHugeist »

Hallo Markus,

Session fertig :| Bug erledigt: Patch done R3428 \testing-7.2 (SVN)
Kuze Beschreibung für alle: Die 64Bit SQLite.DLL war ein wenig veraltet und diverse Funktionen noch nicht unterstützt.

Frage: Könnte jemand die aktuellste Version compilieren (64 Bit-Windows) und zur Verfügung stellen?
ZeosDevTeam

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2805
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: ZeosLib 7.2-Beta wurde veröffentlicht.

Beitrag von m.fuchs »

Das AutoIt-Team ist da immer recht flott: https://www.autoitscript.com/autoit3/fi ... ve/sqlite/
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: ZeosLib 7.2-Beta wurde veröffentlicht.

Beitrag von Christian »

So hat mich nun doch zusehr gereizt :)
Ich mach normalerweise um neue zeos Versionen nen großen Bogen da ich da bisher immer inkompatibilitäten hatte.
Deswegen pfleg ich seit 3 Jahren ne eigene Version im Promet.

Gute Nachricht: ich konnte das Zeos 7.2 nun ohne weitere Änderungen austauschen.
(Korrektur:mit SQLite gibts noch Probleme die ich noch untersuchen muss)
Ich hab etwas mit Postgres rumgespielt und da ist die 7.2 unter Linux 64bit ca 1/3 langsamer als meine verwendete.
Vllt probier ichs Montag mal mit Windows und MSSQL
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

EgonHugeist
Beiträge: 93
Registriert: Di 17. Apr 2012, 22:41

Re: ZeosLib 7.2-Beta wurde veröffentlicht.

Beitrag von EgonHugeist »

Hallo Christian,

sei so gut und sende mir "deine eigene" Version. 1/3 langsamer kann ich nicht glauben, da sowohl Lese als auch Schreib-performance unglaublich gesteigert wurden.
Zahlen zum Vegleich (400%): http://forum.lazarus.freepascal.org/ind ... 14.15.html

Hmm vielleicht bist du einer, der alle Stmts "on the fly" generiert? Ist immer 'ne Frage, wie man DB-Access-Componenten verwendet. Da habe ich greade keinen Einblick..
Momentan versuch ich in jedem Falle prepared stmts zu nutzen und gehe von permanenter Wiederverwendung aus.

Sollte dem nicht so sein(was deine Apps konzeptionell bremst wie ein Fallschirm):
Füge folgenden Parameter

Code: Alles auswählen

 
'EMULATE_PREPARES=True'
 
zu TZDataSet.Properties hinzu. Dann fält Zeos in den gewohnten langsamen Stmt Modus zurück. Langsam .. ja aber schneller, wenn dein Queries permanent wechselst und du die Vorteile der Prepared Statements nicht nutzen willst. Alle Provider mit Ausahme MSSQL/Sybase unterstützen Prepared-Statments. Halte diese so lange, wie möglich "am Leben" und alles rockt unglaublich schneller..
ZeosDevTeam

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: ZeosLib 7.2-Beta wurde veröffentlicht.

Beitrag von Christian »

Hallo,

https://github.com/cutec-chris/promet-e ... nents/zeos

hoff dir reicht das dir den Git pfad zu holen ?!

Ja du hast recht ich generier vieles on the fly, evtl kann ich da mit besser parametrisierten querys noch was umbaun
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Antworten