![]() |
AW: FireDAC: Viele Records einfügen dauert ziemlich lange
Zitat:
Ich mache es so, daß alle 1000-2000 Datensätze ein Commit erfolgt. (Oracle, Erfahrungswert) das ist aber wohl von der Datenbank abhängig. Gruß K-H |
AW: FireDAC: Viele Records einfügen dauert ziemlich lange
Da könntest Du auch das ExecSQL der Connection nutzen. Wenn Dir das langt, sparst Du Dir die zusätzliche Komponente.
|
AW: FireDAC: Viele Records einfügen dauert ziemlich lange
Habe ich grade versucht, das spart auch etwas, ist aber kein bedeutender Unterschied. Zwei Sekunden für 20.000 Records ist immer noch ziemlich hart. Ich schaue mal ob ich mit dem Index irgendwie etwas machen kann...
|
AW: FireDAC: Viele Records einfügen dauert ziemlich lange
Zitat:
|
AW: FireDAC: Viele Records einfügen dauert ziemlich lange
Der Standardweg sollte immer so ablaufen:
Delphi-Quellcode:
Schneller sind dann nur noch BULK INSERTS
Connection.StartTransaction;
try // Viele Datensätze einfügen for idx := 1 to 30000 do begin ... Connection.ExecSQL(sqlString, [param1, param2, param3]); end; Connection.Commit; except Connection.Rollback; raise; end; |
AW: FireDAC: Viele Records einfügen dauert ziemlich lange
Zitat:
Aber 50.000 ist ein Extremfall, ich rechne im Schnitt eher mit einem Zehntel der Menge. Zitat:
Nur meine Advantage-Datenbank ist die lokale Freeware-Version und hat keine Transaktionen, da sind das nur leere Dummies. Der Monster-Zeitanteil geht wahrscheinlich tatsächlich dafür drauf dass er nach jedem Record schaut ob die referentielle Integrität beim FKEY noch gegeben ist. Würde er das einmal am Schluss machen wäre es bestimmt schneller. Ach ja ... :pale: |
AW: FireDAC: Viele Records einfügen dauert ziemlich lange
Zitat:
Da hier das Transaktionhandling abgeklemmt ist, kann ich mir grad spontan nicht vorstellen, wie das dann geht. Stichwort ist jedenfalls: "deferred constraint" Notfalls kannst Du den Constraint auch droppen und wieder einfügen, genau wie den Index. Das müsste dann natürlich am besten nebenläufig erfolgen. Oder Du nimmst eine freie DB, die nicht so ein Eunuch ist. ;) |
AW: FireDAC: Viele Records einfügen dauert ziemlich lange
Zitat:
|
AW: FireDAC: Viele Records einfügen dauert ziemlich lange
Zitat:
Normalerweise sollte man bei einem Import der nur als ganzes gültig ist auch nur am Ende ein Commit machen. In 2015 sollten selbst "schwachbrüstige" DB-Installationen problemlos Commits nach 100.000 Inserts verkraften. Diese 1000-2000 Datensätze ist mehr oder minder ein fauler Kompromiss der aufgrund der schlecht Implementierung oder Konfiguration der DB geschuldet ist. Letztendlich führt man mit so einem Commit die elementare Eigenschaft eines DBMS (ACID) ad absurdum. |
AW: FireDAC: Viele Records einfügen dauert ziemlich lange
Zitat:
Gruß K-H |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:34 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-2025 by Thomas Breitkreuz