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

Lagring af filer i SQL Server

Der er et rigtig godt papir fra Microsoft Research kaldet To Blob or Not To Blob.

Deres konklusion efter et stort antal præstationstests og analyser er denne:

  • hvis dine billeder eller dokument typisk er under 256K i størrelse, er det mere effektivt at gemme dem i en database VARBINARY-kolonne

  • hvis dine billeder eller dokument typisk er over 1 MB i størrelse, er det mere effektivt at gemme dem i filsystemet (og med SQL Server 2008's FILESTREAM-attribut er de stadig under transaktionskontrol og en del af databasen)

  • i mellem disse to er det lidt af en toss-up afhængigt af din brug

Hvis du beslutter dig for at lægge dine billeder ind i en SQL Server-tabel, vil jeg kraftigt anbefale at bruge en separat tabel til at gemme disse billeder - gem ikke medarbejderbilledet i medarbejdertabellen - gem dem i en separat tabel. På den måde kan medarbejdertabellen forblive slank og ond og meget effektiv, forudsat at du ikke altid behøver at vælge medarbejderbilledet også som en del af dine forespørgsler.

For filgrupper, tjek filer og filgruppearkitektur for en introduktion. Grundlæggende ville du enten oprette din database med en separat filgruppe til store datastrukturer lige fra begyndelsen, eller tilføje en ekstra filgruppe senere. Lad os kalde det "LARGE_DATA".

Nu, når du har en ny tabel at oprette, som skal gemme VARCHAR(MAX) eller VARBINARY(MAX) kolonner, kan du angive denne filgruppe for de store data:

 CREATE TABLE dbo.YourTable
     (....... define the fields here ......)
     ON Data                   -- the basic "Data" filegroup for the regular data
     TEXTIMAGE_ON LARGE_DATA   -- the filegroup for large chunks of data

Tjek MSDN-introen om filgrupper, og leg med den!



  1. Konverter 'tid' til 'smalldatetime' i SQL Server (T-SQL-eksempler)

  2. SQLite Inner Join

  3. Migrering af Amazon RDS (MySQL eller MariaDB) til en On-Prem Server

  4. SQL-opdatering af felter i en tabel fra felter i en anden