Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Prestazioni FILESTREAM di SQL Server 2008

Se 100 utenti richiedessero 100 file da 100 Mb (memorizzati tramite FILESTREAM) in una finestra di 10 secondi, le prestazioni di SQL Server 2008 rallenterebbero fino alla scansione?

Su che tipo di server?? Che tipo di hardware per servire quei file? Che tipo di dischi, rete ecc.?? Tante domande.......

C'è un ottimo post sul blog di Paul Randal su SQL Server 2008:prestazioni FILESTREAM - controlla. C'è anche un white paper di 25 pagine su FILESTREAM disponibile - che copre anche alcuni suggerimenti per l'ottimizzazione delle prestazioni.

Ma controlla anche il Microsoft Research TechReport To BLOB or Not To BLOB .

È un articolo molto profondo e molto ben basato che mette alla prova tutte quelle domande.

La loro conclusione:

Quindi, a giudicare da ciò, se i tuoi BLOB sono in genere inferiori a 1 MB, archiviali semplicemente come VARBINARY(MAX) nel database. Se sono in genere più grandi, allora solo la funzione FILESTREAM.

Non mi preoccuperei così tanto delle prestazioni piuttosto che di altri vantaggi di FILESTREAM rispetto all'archiviazione "non gestita" in una cartella di file NTFS:archiviando i file al di fuori del database senza FILESTREAM, non hai alcun controllo su di essi:

  • nessun controllo di accesso fornito dal database
  • i file non fanno parte del backup di SQL Server
  • i file non vengono gestiti in modo transazionale, ad es. potresti ritrovarti con file "zombi" che non sono più referenziati dal database, o voci "scheletro" nel database senza il file corrispondente sul disco

Queste caratteristiche da sole rendono assolutamente utile l'uso di FILESTREAM.