문제

헬리콥터,

Comet을 사용하여 채팅 응용 프로그램을 구현했습니다. 요청은 새 메시지가 길을 가질 때까지 서버에서 "매니"입니다. 그런 다음 새 메시지로 클라이언트로 돌아와 서버로 다시 이동합니다.

내 문제는 다음과 같습니다.

새 메시지를 확인하기 위해 600ms마다 데이터베이스를 폴링합니다. MessageId> ' + lastmessageId가있는 메시지에서 "Select ... Select ... SELECT ... SELECT ...

또한, 존재를 유지하기 위해, 나는 각 사용자와 함께 데이터베이스를 매우 종종 (매우) 업데이트합니다.

SQL Server Transaction Log가 크게 증가하고 있으며 특정 시점에서 채팅 응용 프로그램이 작동하지 않습니다.

채팅 사용자는 등록 된 사용자가 아니며 언제든지 페이지를 떠날 수있는 임의의 사용자 일뿐입니다.

감사합니다 Yaron

도움이 되었습니까?

해결책

Last Keep Alive 정보에 공통 캐시 개체를 사용할 수 있습니까? 소량의 정보처럼 보이며 많은 SQL 업데이트를 피할 수 있습니다.

다른 팁

트랜잭션 로그가 통제를 벗어나지 않도록하는 방법은 다음과 같습니다. http://support.microsoft.com/kb/873235

이 기사의 옵션에는 다음이 포함됩니다.

  • 축소.
  • 로그 크기 변경.
  • 자동 확장 구성.
  • 복구 모델 변경.
  • 로그 파일을 정기적으로 백업합니다.

그리고 더.

참고로, 응용 프로그램 상태에서 객체로 저장하는 사용자 목록 및 마지막 활동 날짜를 설정하는 것이 좋습니다. 그런 식으로 액세스하는 것이 더 빠르며 값을 덜 자주 유지할 수 있습니다.

전체 모드 트랜잭션 로그에서 단순 모드로 전환하면 로그 성장 문제를 해결해야합니다.

그러나 확장 할 수 없기 때문에 가능하다면 폴링을 피하는 것이 일반적으로 좋은 생각이라고 덧붙여 야합니다. Service Broker를 사용하여 이벤트 중심 모델로 전환하거나 SqlDependency. 유지에 대한 다른 접근법도 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top