Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Lưu trữ tệp trong SQL Server

Có một bài báo rất hay của Microsoft Research được gọi là To Blob hoặc Not To Blob.

Kết luận của họ sau một số lượng lớn các bài kiểm tra và phân tích hiệu suất là:

  • nếu ảnh hoặc tài liệu của bạn thường có kích thước dưới 256K, thì việc lưu trữ chúng trong cột VARBINARY của cơ sở dữ liệu sẽ hiệu quả hơn

  • nếu ảnh hoặc tài liệu của bạn thường có kích thước trên 1 MB, thì việc lưu trữ chúng trong hệ thống tệp sẽ hiệu quả hơn (và với thuộc tính FILESTREAM của SQL Server 2008, chúng vẫn nằm dưới sự kiểm soát giao dịch và là một phần của cơ sở dữ liệu)

  • ở giữa hai điều đó, có một chút rắc rối tùy thuộc vào cách sử dụng của bạn

Nếu bạn quyết định đặt ảnh của mình vào bảng SQL Server, tôi thực sự khuyên bạn nên sử dụng một bảng riêng để lưu trữ những ảnh đó - không lưu ảnh nhân viên trong bảng nhân viên - hãy giữ chúng trong một bảng riêng. Bằng cách đó, bảng Nhân viên có thể luôn gọn gàng, có ý nghĩa và rất hiệu quả, giả sử bạn không phải lúc nào cũng cần chọn ảnh nhân viên như một phần trong các truy vấn của mình.

Đối với nhóm tệp, hãy xem Tệp và Kiến trúc nhóm tệp để biết phần giới thiệu. Về cơ bản, bạn sẽ tạo cơ sở dữ liệu của mình với một nhóm tệp riêng biệt cho các cấu trúc dữ liệu lớn ngay từ đầu hoặc thêm một nhóm tệp bổ sung sau đó. Hãy gọi nó là "LARGE_DATA".

Bây giờ, bất cứ khi nào bạn có một bảng mới để tạo cần lưu trữ các cột VARCHAR (MAX) hoặc VARBINARY (MAX), bạn có thể chỉ định nhóm tệp này cho dữ liệu lớn:

 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

Hãy xem phần giới thiệu MSDN trên các nhóm tệp và chơi với nó!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL:phân tích cú pháp họ, tên đệm và họ từ trường tên đầy đủ

  2. Thay thế chức năng trễ dẫn trong SQL Server 2008

  3. Ý nghĩa của SELECT ... FOR XML PATH (''), 1,1) là gì?

  4. Một số tin tức tuyệt vời cho khách hàng Standard Edition trong SQL Server 2014

  5. Các trường hợp sử dụng cho câu lệnh MERGE của máy chủ SQL:Đồng bộ hóa bảng lịch sử và trực tuyến