sql >> Database >  >> RDS >> Sqlserver

Bestanden opslaan in SQL Server

Er is een heel goed artikel van Microsoft Research genaamd To Blob or Not To Blob.

Hun conclusie na een groot aantal prestatietests en analyses is dit:

  • als uw afbeeldingen of document doorgaans kleiner zijn dan 256K, is het efficiënter om ze op te slaan in een database VARBINARY-kolom

  • als uw afbeeldingen of document doorgaans groter zijn dan 1 MB, is het efficiënter om ze in het bestandssysteem op te slaan (en met het FILESTREAM-attribuut van SQL Server 2008 staan ​​ze nog steeds onder transactiebeheer en maken ze deel uit van de database)

  • tussen die twee, het is een beetje een toss-up, afhankelijk van uw gebruik

Als u besluit uw afbeeldingen in een SQL Server-tabel te plaatsen, raad ik u ten zeerste aan om een ​​aparte tabel te gebruiken om die afbeeldingen op te slaan - sla de werknemersfoto niet op in de werknemerstabel - bewaar ze in een aparte tabel. Op die manier kan de werknemerstabel slank en gemeen en zeer efficiënt blijven, ervan uitgaande dat u niet altijd ook de werknemersfoto hoeft te selecteren als onderdeel van uw vragen.

Voor bestandsgroepen, bekijk Bestanden en Bestandsgroeparchitectuur voor een intro. In principe zou u ofwel uw database vanaf het begin met een aparte bestandsgroep voor grote gegevensstructuren maken, of later een extra bestandsgroep toevoegen. Laten we het "LARGE_DATA" noemen.

Wanneer u nu een nieuwe tabel moet maken waarin VARCHAR(MAX) of VARBINARY(MAX) kolommen moeten worden opgeslagen, kunt u deze bestandsgroep specificeren voor de grote gegevens:

 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

Bekijk de MSDN-intro over bestandsgroepen en speel ermee!



  1. MariaDB JSON_EXTRACT() uitgelegd

  2. INSERT COMMAND ::FOUT:kolomwaarde bestaat niet

  3. Te vermijden valkuilen bij het gebruik van de nieuwe Microsoft SSMA-versie 7.8 "

  4. Docker - Hoe kan de opdracht psql in de postgres-container worden uitgevoerd?