FILESTREAM을 사용하여 클라이언트 서버 응용 프로그램에 BLOB를 저장합니다.FILESTREAM을 사용하는 응용 프로그램에서 CHECKPOINT를 효율적으로 사용하는 방법
은 과거에 내가 같은 명령을 실행하여 모든 BLOBS을 취소 수시로했다 :
UPDATE BLOBTABLE set BLOBFIELD = NULL
이이 모양을 지우고, 내가 DB 백업이 작게이했다. 이이 아니라 소프트웨어의 일부로, DBA 활동으로 이루어졌다 다음 모양을 만드는 그러나
난 후CHECKPOINT
주를 실행해야합니다 "디스크에서 사라집니다."
이제는 내 응용 프로그램에서 절대로 CHECKPOINT
을 호출한다는 것을 알고 있습니다.
내가 블랍을 삭제할 때마다해야할까요?
내 애플 (PDF 문서 등) 파일을 저장할 수 있습니다 :
그냥 더 나은 내가 내 진짜 경우의 예를하게 내 자신을 experss합니다.이러한 PDF는 파일 스트림 필드에 얼룩으로 저장됩니다.
사용자가 (ui에서) 삭제할 때 나는
DELETE
명령을 실행합니다.가비지 수집 후에 이 실행되지 않으므로 CEHCKPOINT를 호출하지 않습니다.
이 점을 고려해 볼 때 나는 통제할만한 것이 없다는 것을 알고 있습니다.
제 질문은 간단합니다 : 그 파일 중 하나를 삭제할 때마다 CHECKPOINT
을 실행해야합니까? 이 일에 어떤 단점이 있습니까?
감사합니다.
FILESTREAM 데이터는 (SQL Server 설계에 따라) 폴더에 저장됩니다. 내 애플 리케이션에 BLOB를 추가하면 그 폴더의 파일 수가 3이 증가하는 것을 볼 수 있습니다. 파일을 삭제하면 -3으로 돌아갈 것으로 예상됩니다. – LaBracca
적당히 활성화 된 데이터베이스 인 경우 자동으로 매우 자주 검사 점을 지정해야합니다. 그리고 디스크 공간이 부족한 경우가 아니라면 (불필요한 파일을 제거하기 위해 시스템을 신뢰해야합니다. 강제로 시도하면 일반적으로 전반적인 성능이 저하됩니다. –
@Damien_The_ 가비지 컬렉터는 CHECKPOINT로 수동으로 호출하지 않아도 가끔씩 실행됩니다. – LaBracca