문제

응용 프로그램 로그인 과정에서 로그인을 검증하는 몇 가지 쿼리가 실행되었습니다. 그것들을 평가할 때 나는 쿼리 중 하나가 Nolock 힌트없이 실행된다는 것을 알았습니다.

데이터가 거의 변하지 않기 때문에 Dirty Read의 특별한 위험이없는 것 같습니다.

실패한 로그인을 반복해서 시도한 누군가의 시도 된 DOS 유형 공격으로 생각하면 Nolock의 부족이 실패에 대한 임계 값을 낮추는 것을 제안합니다.

나는 그것이 DOS 공격의 결과가 거의 없다고 생각하지만 (웹 서버가 먼저 갈 것이라고 생각합니다) Nolock을 추가하면 불가능한 곳에서 Nolock을 추가해야합니다.

그래서, 나는 과도하거나 사소한 일입니까?

도움이 되었습니까?

해결책

NOLOCKS를 갖는 것은 서버에 대한 DOS 시도로 걱정하는 것 중 가장 적은 걱정입니다.

나는 그것을 땀을 흘리지 않을 것입니다.

당신이 말했듯이, 데이터가 거의 변경되지 않는다면, 놀랍서가 있으면 아프지 않을 것입니다.

다른 팁

예, 당신은 과도하게 3가되고 있습니다.

DOS 공격에 노출 된 경우 SQL 승인 호출의 Nolock은 걱정 중 가장 적습니다. 일부 DOS 감지, 실패 추적+스로틀을 구현하고, 사용자에게 영향을 미치지 않지만 공격 속도를 늦출 계획된 일시 정지조차도 ...

Nolock은 특히 광범위한 거래에서 해당 쿼리를 자주 호출하면 성능을 향상시킬 수 있습니다.

더러운 읽기의 본질을 고려하십시오. 발생할 수있는 시간 창이 진정으로 중요합니까? 예 : 승인 된 역할에서 누군가를 추가하거나 제거하는 곳.

추가 시나리오에서는 해당 시도에서 더러운 읽기가 실패합니다. (접근 불가)

제거 시나리오에서 더러운 읽기는 그 시도에 대해 작동합니다. (액세스 부여)

수동 작동을 통해 데이터가 변경되면 인간 상호 작용 - "대기 시간"에 대한 마진은 일반적으로 데이터베이스보다 훨씬 높거나 불확실합니다!

또한 매우 드문 경우이지만 여전히 : 현재 누군가가 사용자가 로그인하는 것을 방지하기 위해 사용자를 비활성화하는 순간, Nolock은 즉시 잠겨 있어야하는 불량 사용자/해커/직원이 될 수 있습니까?

Nolock의 성능 이점을 포기하려면이 특정 시나리오에 대해 걱정해야합니다.

허가를 살펴보면 테이블을 훨씬 더 잘 보호 할 수 있습니다. 이와 같은 테이블은 직접 액세스를 허용하지 않아야하며 모든 액세스는 저장된 Procs와 대신 설정된 권한이어야합니다.

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