2011-10-31 2 views
1

나는 GDI + 라이브러리를 사용하여 그린 그래픽 jpg 이미지로 사용자 입력을 처리하는 사이트를 개발 중입니다. 성능 향상을 위해 이러한 이미지를 한 번만 생성 한 다음 디스크에 저장합니다. 나중에 참조 할 수 있도록 데이터베이스에서 위치를 가져옵니다. 각 사용자 입력은 약 60kb의 세 이미지 (축소판, 확대/축소 및 pdf 보고서 용)로 이루어집니다. 우리는 하루에 이러한 입력의 100 - 1000을 기대합니다.BLOB 여부 또는 이미지 캐싱

이제 이미지를 데이터베이스 (BLOB 필드 - MySql 사용)에 저장하고 ashx 처리기 페이지를 만들어 이미지를 표시하는 것을 고려하고 있습니다. 가장 큰 이유는 한 서버에서 다른 서버로 사이트를 옮기는 것이 더 쉬워지기 때문입니다. 서버 파일 시스템에 대한 읽기/쓰기 권한과 db와 파일 간의 연결 끊김에 대해 걱정할 필요가 없습니다.

이 시나리오를 변경하는 것이 좋습니다. 성과에 중대한 긍정적 또는 부정적 변화가 있었습니까?

답변

4

성능에 미치는 영향은 HW (RAM, SSD 등) 및 네트워크 (응용 프로그램과 동일한 컴퓨터에 있습니까?)와 관련된 DB 설정에 따라 다릅니다.

보통 나는 내 경험상 파일이 커지는 경향이있어 (DB의 성능이 저하 될 수 있습니다!) 파일 시스템이 모든 DB보다 파일을 더 잘 처리하도록 최적화되어 있기 때문에 파일 시스템을 고수하는 것이 좋습니다.

OTOH 크기 (최대 60KB)가 충분하고 DB가 충분히 빠르면 BLOB를 다른 필드 (기본 키) 만있는 별도의 테이블에 넣어야합니다. BLOB와 동일한 테이블에 메타 데이터 등을 저장하지 마십시오! 하지만

한 발언 :

난 항상 철저한 성능 테스트를 할 (사용자/부하를 시뮬레이션, 프로파일 러 등을 사용) 이러한 변화에 결정하기 전에 ... ASHX 처리기의 두 버전을 만들 것을 권장합니다 - 하나는 경로에 대해서만 DB를 사용하고 파일 시스템에서 파일을 전달하고 두 번째 파일은 DB를 통해 전달합니다 ...