varbinary (max) 필드의 오디오 파일에 blob FileStream을 사용하도록 설정된 데이터베이스가 있습니다. 이후 80GB 이상의 크기로 성장했으며 성능 문제에 직면 해 있습니다.T-SQL에서 varbinary (max)를 파일 스트림으로 실제 varbinary (max)로 변환하는 방법
주위를 둘러 보았을 때 평균 블로 브 크기가 약 180k임을 발견했습니다. 그리고 1MB가 넘는 객체에는 MSDN 파일 스트림을 사용해야하므로이 BLOB를 어떻게 저장하는지 다시 평가할 것입니다. MSDN에서는 "더 작은 개체의 경우 데이터베이스에 varbinary (최대) BLOB를 저장하면 더 나은 스트리밍 성능을 제공하는 경우가 많습니다." 그래서 varbinary (max)에서 filestream로 옮기는 것을 고려하고 있습니다. varbinary (max) 필드를 사용하는 것뿐입니다.
내 질문은, 실제 varbinary 필드 자체로 filestream 각 filestream blob 이동하려면 SQL 스크립트를 사용하여 좋은 방법 있는가? 내가 묻기로 결정하기 전에 작업했던 대안은 blob을위한 데이터베이스를 쿼리하고 각 blob을 파일 시스템에 작성하는 것입니다. 그런 다음 수동으로 파일 스트림 항목을 데이터베이스에서 제거하십시오. 그런 다음 C# 응용 프로그램에서 파일 시스템의 blob을 읽고 데이터베이스에 다시 기록합니다. 나는 쉬운 방법이 있어야한다고 생각했다.
NEWID()는 인덱스에 적합하지 않습니다. 대신 NEWSEQUENTIALID()를 사용하십시오. –