Hallo Frickler,
interessante Frage: Nein, auch das habe ich umgeworfen. Mir scheint du benutzt
IB/
FB als RDBMS. Schon seit 7.2 mach das Zeos nicht mehr:
https://forum.lazarus.freepascal.org...,48159.45.html. Das retained Verhalten bleib bestehen, jedoch wird immer wieder eine neue TXN erschaffen, und die alte, wenn nicht mehr benötigt, verworfen(commit/rollback as requested by user). In 7.3(wird 8.0) habe eine TZTransaction-Komponente hinzugegt. Die TZDataSets haben eine zusätzliche Properties: "UpdateTransaction", "Transaction". Man kann sie nutzen, brauch sie jedoch nicht, Simplification. Ich möchte hier mal, mit Verlaub, mit einer Ente aufräumen: Zeos kann und konnte seit mind 15Jahren "HardCommits". Diese können nach wie vor über die Connection-Properties ein/aus geschalten werden.
Code:
ZConnection.Properties.Values['hard_commit'] = 'True'
. Für die Properties habe ich ab 7.3 einen PropertyEditor hinzugefügt, um euch durch den Jungle der ZDBC-Properties zu führen.
Ich bin bei der Transactions-Sache etwas weiter gegangen:
Jeder Treiber bietet nun multiple Transactionen an. Jedoch außer für
FB/
IB wird eine neue Connection geklont. Soll heißen
MySQL/PostgreSQL kann mann mit einer long read(wenn irgendwie unterstützt)-TXN und auch short-read/write-TXN nutzen. Hierzu wird ein Connection-Pool aufgebaut. Man kann es nutzen, braucht man aber nicht.... Z.B.
MySQL/MariaDB verspricht bessere fetching performance, wenn kein "write" durchgeführt wird.
Was fehlt dir/anderen sonst so?