글쓰기를 시도하고 어떤 일이 일어나는지 보셨습니까? 병목 현상이 있습니까?
앱이 차단되는 것을 방지해야하는 경우 데이터베이스 호출을 지연시키기 위해 쓰기를 대기시키는 방법이 있습니다. 그러나 대기열이 1 초 또는 2 초 안에 지워질 것으로 기대합니다. 이것이 정상이라면 대기열이 필요합니까?
아니면 준비 테이블에 스풀링 한 다음 나중에 플러시 할 수 있습니까? 우리는이 기술을 사용하여 분당 수백만 개의 새로운 행을 지속적으로 기록합니다 (실제로는 간단한 복구로 스테이징 DB를 사용합니다). 그러나 행을 작성하는 경험이있을 때까지는 구현하지 않았습니다.
참고 : SQL Server의 모든 쓰기가 됩니다 쓰기 앞서 로깅 (WAL) 프로토콜의 한 부분으로 디스크를 할 이동합니다. 이것은 해당 쓰기에 대한 t-log 항목에 적용됩니다.
행이있는 데이터 페이지는 특정 시점 (시간, 사용, 메모리 부족 등)에 따라 디스크로 이동하지만 일반적으로 데이터는 메모리에 있습니다. 이것을 "Checkpointing"이라고하며 메모리에서 데이터를 제거하지 않고 변경 사항을 플러시합니다 (2011 년 11 월 24 일 편집)
편집하다:
위의 마지막 단락을 기준으로 전반적으로 고려해야 할 사항은 성능 향상을 위해이 데이터베이스의 LDF를 전용 디스크 세트로 옮기는 것입니다. 준비 데이터베이스를 분리합니다 (MDF / LDF마다 하나씩). 데이터베이스 서버에 12 개 또는 3 개의 다른 볼륨 (일반적으로 SAN을 통해)이있는 것이 일반적입니다.