Italian community of Lazarus and Free Pascal

Programmazione => Databases => Topic aperto da: Maverich - Dicembre 19, 2014, 10:25:20 am

Titolo: Server con Db Firebird 2.5.3
Inserito da: Maverich - Dicembre 19, 2014, 10:25:20 am
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

Codice: [Seleziona]
   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

Codice: [Seleziona]
  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).
Titolo: Re:Server con Db Firebird 2.5.3
Inserito da: nomorelogic - Dicembre 19, 2014, 03:41:23 pm
Ms2008 immagino sia l'express, solitamente ha qualche limite ma non dovrebbe fare tutta questa differenza.

L'importante è che quando fai le prove (sia locale che rete) sia l'antivirus che il firewall (Edit: sia sul client che sul server) devono essere spenti altrimenti ci sono sempre dubbi (magari un dbserver è rallentato ed un'altro no).

Un'altra cosa che mi è capitata di notare con MsSql2008R2 è che quando client e server sono a dominio la velocità migliora sensibilmente (non ho capito il perché ma è quanto ho riscontrato).
Altra cosa che puoi verificare è l'installazione dei service pack di MsSql. Non so quanti ne siano attualmente ma tra un SP e l'altro le cose cambiano sempre.

Non usare i DNS quando fai i test: indirizzo IP secco (con eventuale nome istanza nel caso MsSql).
Nel caso infatti di frequenti connect/disconnect, la risoluzione del nome porta via parecchio tempo.

Spero di essere stato d'aiuto, fai sapere nel caso vieni a capo di qualcosa di interessante.
Titolo: Re:Server con Db Firebird 2.5.3
Inserito da: Maverich - Dicembre 19, 2014, 05:48:23 pm
Sicuramente posto gli sviluppi, di questa rogna.

Nel frattempo ho installato Windows Server 2012 RC2 developer, su una macchina Virtuale sicuramente solo i servizi essenziali attivi; ed i trasferimenti sono decisamente veloci, ma probabile che essendo sullo stesso disco non ci sia perdita.

Cosa intendi se server e client sono a dominio e come lo verifico ?
Titolo: Re:Server con Db Firebird 2.5.3
Inserito da: nomorelogic - Dicembre 19, 2014, 07:52:26 pm
il dominio se c'è installato lo si vede già dal login al PC

hai mai visto una mask di login dove oltre ad utente e password ti chiede se:
- accedere a "questo computer"
- accedi a "un nome qualsiasi"

puoi dare un'occhiata qua
http://windows.microsoft.com/it-it/windows7/what-is-the-difference-between-a-domain-a-workgroup-and-a-homegroup (http://windows.microsoft.com/it-it/windows7/what-is-the-difference-between-a-domain-a-workgroup-and-a-homegroup)

ma se li hai installati tu credo che il dominio non ci sia ;)