이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 27|회답: 0

[팁] 고동시성 EF 코어 쿼리를 위한 WITH (NOLOCK) 최적화

[링크 복사]
게시됨어제 20:48 | | |
요구사항: 일부 데이터는 기사 내용, 페이지 조회수, 댓글 등 더티 리드를 허용하며, 이는 금융 데이터만큼 엄격하지 않습니다. 쿼리 성능 향상을 위해 ReadUncommitted트랜잭션을 사용할 수 있지만, SqlTransaction과 TransactionScope는 아직 수정되지 않은 누수 격리 수준의 버그가 있으니 WITH(NOLOCK) 솔루션 사용을 고려해 보세요.

복습:
Entity Framework 쿼리 최적화 WITH(NOLOCK)
https://www.itsvse.com/thread-9513-1-1.html

.NET/C#은 SQL 문들을 파싱하고 실행하는 데 SqlScriptDOM을 사용합니다
https://www.itsvse.com/thread-11222-1-1.html

SqlTransaction과 TransactionScope 누수 격리 수준 (이 버그는 8년 동안 존재했지만 아직 수정되지 않았습니다!) 많은 분들이 영향을 받을 수 있지만, 인지하지 못할 수도 있다고 생각합니다:하이퍼링크 로그인이 보입니다.

이 문서는 SQL 문구를 분석하고 WITH(NOLOCK)을 추가하기 위해 SqlScriptDOM을 참조해야 합니다. 오픈 소스 프로젝트를 참고하세요:하이퍼링크 로그인이 보입니다.

누겟의 인용문은 다음과 같습니다:
새로운 AllowDirtyReadAttribute.cs 기능을 생성하세요, 코드는 다음과 같습니다:
DbCommandInterceptor의 특정 메서드를 덮어쓰기 위해 새로운 WithNoLockInterceptor를 생성합니다. 코드는 다음과 같습니다:
EF 코어에 다음과 같은 구성으로 주입하세요:
컨트롤러 메서드 위에 추가하려면 사용하세요[더럽게 읽어도 돼]깡통.

원시 SQL 문장:
[o]를 선택하세요. [Id],
         [o]. [고객명],
         [o0]. [Id],
         [o0]. [OrderId],
         [o0]. [제품]
[명령서] 아스로(o)
             왼쪽 외곽 조인트
         [오더라인] AS [o0]
         [o]에 있습니다. [Id] = [o0]. [OrderId]
여기서 [o]. [id] = 1
순서는 [O]입니다. [id];

NOLOCK을 추가한 후 생성된 문장:
[o]를 선택하세요. [Id],
         [o]. [고객명],
         [o0]. [Id],
         [o0]. [OrderId],
         [o0]. [제품]
[명령서] [o] 위드 (노록)
         왼쪽 외곽 조인트
         [오더라인] [o0] (노록)
         [o]에 있습니다. [Id] = [o0]. [OrderId]
여기서 [o]. [id] = 1
순서는 [O]입니다. [id];




이전의:(MSSQL) SQL 서버 전체 텍스트 검색, 전체 텍스트 인덱스
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com