ho fatto un piccolo applicativo (CodeTyphon) per testare le prestazioni inserendo Immagini jpeg all'interno di campi Blob all'interno di una tabella FB
usando ZeosLib 7.2.0
carico il file su un TMemoryStream, che poi passo ad un datamodule che lo scrive nel db
I test in Locale o su Pc e Server Virtuali su VirtualBox, danno sempre buone prestazioni, come anche su un vecchio NB in lan con WinXP;
dipende sempre dalle dimensioni dell'immagine, 1,4Mb o 20 Mb chiaramente fa differenza
Passando ad un server reale Ms 2008 in Lan le prestazioni decadono moltissimo, usando il test in locale sul server 127.0.0.1 anche peggio
ZConnection1.HostName := ipserver; //127.0.0.1 oppure P del PC su VirtualBox in Lan con Scheda con Bridge
ZConnection1.Port := 3050;
ZConnection1.LibraryLocation := ... fbclient.dll;
ZConnection1.Database := path DB
//ZConnection1.TransactIsolationLevel ...> tiSerializable;
//devo metterlo a meno, qualunque opzione da errore in compilazione
//ZConnection1.TransactIsolationLevel := tiSerializable; ZConnection1.TransactIsolationLevel.tiSerializable
ZConnection1.Connected;
fatte le stesse (quasi) prove in Delphi FireDAC e DbExpress le zeosLib arrivano alla 7.1.3 e trovano problemi nell'installazione, ma questo e' OT ,
e i risultati sono praticamente senza differenze, nelle Zeos non posso definire la modalita' di trasmissione
con FireDAc posso scegliere TcpiIp o IpLocal
try
MemStream := TMemoryStream.Create;
MemStream.LoadFromFile(sFile);
dData := Now;
ZQuery1.Insert;
ZQuery1.FieldByName('ID').AsInteger := Get_ID;
ZQuery1.FieldByName('DATA').AsDateTime := dData;
ZQuery1.FieldByName('NOMEFILE').asString := sFile;
ZQuery1.FieldByName('DIMENSIONE').AsInteger := MemStream.Size;
(ZQuery1.FieldByName('IMMAGINE') as TBlobField).LoadFromStream(MemStream);
ZQuery1.Post;
finally
MemStream.Free;
end;
anche provando con ZQuery1.CacheUpdates := true le prestazioni non cambiano
come faccio a capire se le prestazioni scadenti dipendono dal Server MS e dove si puo' migliorare (sia lato Server che Client).