2014-10-06 2 views
1

FILESTREAM을 사용하여 클라이언트 서버 응용 프로그램에 BLOB를 저장합니다.FILESTREAM을 사용하는 응용 프로그램에서 CHECKPOINT를 효율적으로 사용하는 방법

은 과거에 내가 같은 명령을 실행하여 모든 BLOBS을 취소 수시로했다 :

UPDATE BLOBTABLE set BLOBFIELD = NULL 

이이 모양을 지우고, 내가 DB 백업이 작게이했다. 이이 아니라 소프트웨어의 일부로, DBA 활동으로 이루어졌다 다음 모양을 만드는 그러나

난 후

CHECKPOINT 

주를 실행해야합니다 "디스크에서 사라집니다."

이제는 내 응용 프로그램에서 절대로 CHECKPOINT을 호출한다는 것을 알고 있습니다.

내가 블랍을 삭제할 때마다해야할까요?

내 애플 (PDF 문서 등) 파일을 저장할 수 있습니다 :

그냥 더 나은 내가 내 진짜 경우의 예를하게 내 자신을 experss합니다.

이러한 PDF는 파일 스트림 필드에 얼룩으로 저장됩니다.

사용자가 (ui에서) 삭제할 때 나는 DELETE 명령을 실행합니다.

가비지 수집 후에 이 실행되지 않으므로 CEHCKPOINT를 호출하지 않습니다.

이 점을 고려해 볼 때 나는 통제할만한 것이 없다는 것을 알고 있습니다.

제 질문은 간단합니다 : 그 파일 중 하나를 삭제할 때마다 CHECKPOINT을 실행해야합니까? 이 일에 어떤 단점이 있습니까?

감사합니다.

+0

FILESTREAM 데이터는 (SQL Server 설계에 따라) 폴더에 저장됩니다. 내 애플 리케이션에 BLOB를 추가하면 그 폴더의 파일 수가 3이 증가하는 것을 볼 수 있습니다. 파일을 삭제하면 -3으로 돌아갈 것으로 예상됩니다. – LaBracca

+1

적당히 활성화 된 데이터베이스 인 경우 자동으로 매우 자주 검사 점을 지정해야합니다. 그리고 디스크 공간이 부족한 경우가 아니라면 (불필요한 파일을 제거하기 위해 시스템을 신뢰해야합니다. 강제로 시도하면 일반적으로 전반적인 성능이 저하됩니다. –

+0

@Damien_The_ 가비지 컬렉터는 CHECKPOINT로 수동으로 호출하지 않아도 가끔씩 실행됩니다. – LaBracca

답변

1

데이터베이스는 다른 순간에 검사 점을 수행하며, 그 중 하나는 백업 수행 시점입니다.

체크 포인트가 가비지 수집을 트리거하므로 성능을 저하시킬 위험이 있으므로 응용 프로그램에서 CHECKPOINT을 호출하기 위해 필요하지 않습니다 (예외는 거대하거나 복잡한 시나리오 일 수 있음).

필요한 경우 유지 관리 작업으로 CHECKPOINT을 사용하는 것이 좋지만 데이터베이스 백업 (또는 SQL 서비스 중지)이 결과로 검사 점을 갖습니다.

관련 문제