Có một bài báo thực sự hay của Microsoft Research được gọi là To Blob or Not To Blob.
Kết luận của họ sau khi một số lượng lớn các bài kiểm tra hiệu suất và phân tích là:
nếu hình ảnh hoặc tài liệu của bạn thường dưới 256K về kích thước, lưu trữ chúng trong một cơ sở dữ liệu VARBINARY cột là hiệu quả hơn
nếu hình ảnh hoặc tài liệu của bạn thường có dung lượng trên 1 MB, lưu trữ chúng trong hệ thống tệp hiệu quả hơn (và với thuộc tính FILESTREAM
của SQL Server 2008, chúng vẫn đang được kiểm soát giao dịch và một phần của cơ sở dữ liệu)
ở giữa hai, đó là một chút của một toss-up tùy thuộc vào việc bạn sử dụng
Nếu bạn quyết định đưa hình ảnh của bạn vào một bảng SQL Server, tôi sẽ khuyên bạn sử dụng một bảng riêng biệt để lưu trữ những hình ảnh đó - không lưu trữ foto của nhân viên trong bảng nhân viên - giữ chúng trong một bảng riêng biệt. Bằng cách đó, bảng Employee
có thể ở mức gọn gàng và 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ân viên foto, như một phần của truy vấn của bạn.
Đối với nhóm tệp, hãy xem Files and Filegroup Architecture để biết phần giới thiệu. Về cơ bản, bạn có thể tạo cơ sở dữ liệu của bạn 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 này. 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 ra mà cần phải lưu trữ VARCHAR(MAX)
hoặc VARBINARY(MAX)
cột, bạn có thể chỉ định nhóm tập tin 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
Kiểm tra các giới thiệu MSDN trên filegroups, và chơi xung quanh với nó!
Nguồn
2013-03-12 09:03:14