문제

SQL Server 2008에 많은 양의 이미지 데이터를 저장하기위한 모범 사례는 무엇입니까? 약 5 기가의 저장 공간을 사용하여 약 50,000 개의 이미지를 저장할 것으로 예상됩니다. 현재 열이있는 단일 테이블을 사용 하여이 작업을 수행하고 있습니다.

ID: int/PK/identity
Picture: Image
Thumbnail: Image
UploadDate: DateTime

예상 총 용량의 약 10%에서 인서트가 오랜 시간이 걸리는 것처럼 보이기 때문에 걱정됩니다. 일반적인 이미지는 약 20K -30K입니다. 이 데이터를 저장할 수있는 더 나은 논리 구조가 있습니까? 아니면 데이터로드를 수용하기 위해 클러스터링 또는 기타 IT 솔루션을 조사해야합니까?

도움이 되었습니까?

해결책

Image SQL Server 2008의 더 이상 사용되지 않은 데이터 유형입니다. 대체되었습니다. VARBINARY(MAX) SQL Server 2005 이후 이미지를 DB에 저장하기로 결정한 경우 사용해야합니다. VARBINARY(MAX) 필드와 추가를 고려하십시오 FILESTREAM 옵션.

이미지와 같은 스트리밍 데이터, FILESTREAM 보다 훨씬 빠릅니다 VARBINARY(MAX) 혼자서 이 백서:

Filestream vs. varbinary(max) performance
(원천: Microsoft.com)

이 스트리밍 성능을 달성하려면 디자인에서 적절한 API를 사용하고 win32 블로브의 손잡이. a로 업데이트됩니다 FILESTREAM 열 (포함 INSERTS)는보다 느립니다 VARBINARY(MAX).

다른 팁

DB에게 DB에 있거나 그렇지 않으면 이것이 문제입니다.

당신은 여기서 DB의 이미지와 함께 종교 전쟁을 시작하고 있습니다.

SQL 2000에 대해 의견이 나올 것이지만 2005 년 이상은 Blob을 저장하는 상당히 괜찮은 작업을 수행합니다. MS SQL Server를 스토리지로 사용하는 SharePoint 설치의 수를 살펴보십시오. 나는 작은 이미지 저장을 위해이 경로 만 갈 것입니다.

DB에 넣으면 쿼리를 쉽게하고 개발자가 작성할 때 IO 및 인스턴스를 줄이기 위해 이미지를 IT와 관련된 데이터와 분리해야한다고 말합니다. SELECT * (그렇습니다.

SQL 2008에서 Filestream을 확인하십시오 - 이와 같은 것을위한 것입니다.

다음은 DB 대 파일 시스템의 다른 요점은 다음과 같습니다.

  • DB 스토리지, 백업, 복원, 유지 보수 라이센스가 비싸다
  • DB의 스토리지는 디스크보다 더 어려워집니다.
  • 디스크를 가속화 할 수 있습니다
  • DB에서 이미지를 얻거나 설정하려면 코드를 작성해야합니다 - 디스크에 필요하지 않습니다.

새로운 것을 확인하십시오 파일 스트림 SQL Server 2008의 기능은 본질적으로 모든 읽기 및 쓰기에서 데이터를 SQL 버퍼로 읽지 않아도 데이터베이스에 Blob (읽기 : 이미지) 데이터를 저장할 수 있습니다. FileSytem을 원활하게 사용하여 SQL 페이지 대신 큰 파일을 저장합니다. 이로 인해 더 큰 파일에 대한 읽기 및 쓰기 시간이 훨씬 빨라질 수 있으며, 무엇 보다도이 모든 것이 후드 아래에서 발생하기 때문에 Filestream 열에서 작업하기 위해 기존 저장된 Procs를 변경할 필요가 없습니다. 보다 여기 코드 샘플 및 일부 성능 프로파일 링 용.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top