2012-01-21 4 views
2

SQL Azure 데이터베이스에 액세스하는 Azure에서 호스트 된 WCF REST 서비스를 여러 대 있습니다. ServicePointManager.UseNagleAlgorithm이 true로 설정되어 있습니다. 이 값을 false로 설정하면 테이블 저장소에 대한 호출 (레코드 < 1460 바이트 삽입) 속도가 빨라진다는 것을 이해합니다. 다음은 link입니다.WCF가 SQL Azure에 연결하는 동안 UseNagleAlgorithm을 비활성화합니다.

내 질문 - Nagle 알고리즘을 사용하지 않으면 SQL Azure에 대한 호출 속도가 빨라 집니까?

답변

3

Nagle의 알고리즘은 모두 TCP 수준의 데이터를 작은 패킷 수로 버퍼링하는 것으로 모든 레코드 크기에 연결되지 않습니다. 예를 들어 1300 바이트의 데이터를 테이블 스토리지에 쓸 수 있지만 TCP 헤더 정보, 콘텐츠 직렬화 등을 포함하면 전송되는 데이터가 1460 바이트의 임계 값보다 커질 수 있습니다.

어떤 경우 든 : 데이터가 버퍼링 될 때 알고리즘이 활성화 될 때 최대 500ms의 쓰기 지연이 발생할 수 있으므로 전선을 통한 tcp 패킷이 적어집니다.

Nagle의 알고리즘을 사용하지 않도록 설정하면 SQL Azure에 액세스하는 데 도움이 될 수 있지만 수행중인 읽기/쓰기 유형에 따라 처리량이 영향을 받는지 확인하려면 약간의 벤치마킹이 필요할 수 있습니다. 필요한 SQL 명령 텍스트가 포함 된 SQL Azure를 호출하면 큰 패킷이 발생하여 nagle을 사용하지 않으면 차이가 발생하지 않을 수 있습니다.

+0

설명해 주셔서 감사합니다. 웹 서비스는 EF를 사용하여 SQL Azure DB에 기록합니다. 따라서 Nagle을 비활성화하면 가장 좋은 경우에 도움이 될 것입니다. 즉, 단지 두 개의 int가있는 레코드를 삽입하면 최악의 경우에는 차이가 나지 않습니다 (?). – user529265