UniQuery Blob field Stream Writing is too slow.. VERY SLOW!
Posted: Tue 25 Nov 2008 09:34
I try to write 1 MB stream into Blob Field.. I use several thousand Stream.Write() commands into same Stream field.
In Ado way, writing finishes in milisec. may be total 0.1 sec..
But in Unidac way consumes at least 5 minutes !!
Do I need to know something about working with Blog Fields and Streams?
I use UNIDAC Pro 1.00.0.8 for RAD Studio 2007
Samples are;
THE FAST ADO WAY!!
AdoD.CommandText :='SELECT ID, STREAM3 FROM ATABLE WHERE ID = 1 ';
AdoD.Open;
AdoD.Edit;
F2 := AdoD.FieldByName('STREAM3');
FStream := AdoD.CreateBlobStream(F2, bmReadWrite);
try
// There are several thousands Stream.Write in this object
ObjectRefs.SaveToStream(FStream);
//!!! THIS OPERATION TAKES 0.1 SEC. IN ADO !!!
finally
FStream.Free;
AdoD.Post;
end;
AND THIS IS UNIDAC VERY VERY SLOW WAY
Q.Sql.Text := 'SELECT ID, STREAM3 FROM ATABLE WHERE ID = 1' ;
Q.Open;
Q.Edit;
F2 := Q.FieldByName('STREAM3');
FStream := Q.CreateBlobStream(F2, bmReadWrite);
try
//SAME OPERATION AS ABOVE
ObjectRefs.SaveToStream(FStream);
//!!! TAKES MORE THAN 5 MINUTES !!!
finally
FStream.Free;
Q.Post;
Q.Free;
end;
In Ado way, writing finishes in milisec. may be total 0.1 sec..
But in Unidac way consumes at least 5 minutes !!
Do I need to know something about working with Blog Fields and Streams?
I use UNIDAC Pro 1.00.0.8 for RAD Studio 2007
Samples are;
THE FAST ADO WAY!!
AdoD.CommandText :='SELECT ID, STREAM3 FROM ATABLE WHERE ID = 1 ';
AdoD.Open;
AdoD.Edit;
F2 := AdoD.FieldByName('STREAM3');
FStream := AdoD.CreateBlobStream(F2, bmReadWrite);
try
// There are several thousands Stream.Write in this object
ObjectRefs.SaveToStream(FStream);
//!!! THIS OPERATION TAKES 0.1 SEC. IN ADO !!!
finally
FStream.Free;
AdoD.Post;
end;
AND THIS IS UNIDAC VERY VERY SLOW WAY
Q.Sql.Text := 'SELECT ID, STREAM3 FROM ATABLE WHERE ID = 1' ;
Q.Open;
Q.Edit;
F2 := Q.FieldByName('STREAM3');
FStream := Q.CreateBlobStream(F2, bmReadWrite);
try
//SAME OPERATION AS ABOVE
ObjectRefs.SaveToStream(FStream);
//!!! TAKES MORE THAN 5 MINUTES !!!
finally
FStream.Free;
Q.Post;
Q.Free;
end;