Subject | Re: [IBO] Slow append of records |
---|---|
Author | Svein Erling Tysvær |
Post date | 2001-07-26T08:59:08Z |
>I am populating a table with records from aWell, the number of inserts per second will of course vary depending on the
>paradox table. There are approx 8100 records.
>After the first 500 or so records the appends
>slow down to about one second per append of
>the IB records. In the same program I have another
>dataset that appends/posts several hundred records
>in only a few seconds. Any Ideas?
row size. But your inserts are dead slow regardless of the size of records.
I timed a program I've written, and it transferred about 2 000 records per
second (24 fields of type integer, date or char - no blobs) from one
Firebird (Interbase) database to another.
>Local IB6 but on a server, IBO 3Di, Paradox 5.Are these settings thoughtfully considered? I'd go for tiCommitted, no
>Using tiConsistancy, AutoCommit, Server AutoCommit,
>Forced writes, No synchs in the TIB_Query,
AutoCommits and a TIB_DSQL. Forced writes are OK :o}
Add a TIB_Transaction, assign your TIB_Connection to it and set both of
them for your TIB_DSQL. Your DSQL should have SQL like
INSERT INTO MyTable (MyField1, MyField2 ... )
VALUES (:MyValue1, :MyValue2 ... )
Then in your program do
MyConnection.Connect;
if MyConnection.Connected then try
MyConnection.BeginBusy(True);
MyDSQL.Prepare;
repeat
MyDSQL.ParamByName(MyValue1) ... :=PdxTable.FieldByName ...
MyDSQL.Execute;
PdxTable.Next;
until PdxTable.Eof;
MyTransaction.Commit;
finally
if MyTransaction.TransactionIsActive then //shouldn't execute if successful
MyTransaction.Rollback;
MyConnection.EndBusy;
MyConnection.DisConnect;
end;
If you also set PdxTable.Exclusive, your insertion should go down to a few
seconds,
Set