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

보기: 44050|회답: 3

[출처] Entity Framework 쿼리 최적화 WITH(NOLOCK)

[링크 복사]
2021-1-6 14:52:16에 게시됨 | | | |
우선, 이 기사와쿼리 성능을 향상시키기 위해 WITH(NOLOCK)를 추가하는 것이 아닙니다대신, 데이터는 트랜잭션의 격리 메커니즘을 통해 읽힙니다.

SQL Server 데이터베이스에서는 동일한 데이터베이스 테이블이 자주 읽고 쓸 때 잠금 문제가 발생하는데, 이는 이전 삽입, 업데이트, 삭제 트랜잭션이 완료될 때까지 읽을 수 없고, 동시 작업과 더티 데이터를 읽기 위해 선택 작업이 완료될 때까지 기다려야 합니다.

SELECT 문과 WITH (NOLOCK)을 사용하여 블로킹 교착 상태를 해결합니다.

메모:WITH(NOLOCK)를 사용하면 더티 데이터 읽기가 발생합니다

ef는 생성된 SQL 문장을 표시합니다
https://www.itsvse.com/thread-3813-1-1.html
테스트 코드는 다음과 같습니다:

Func delegate를 사용하여 코드를 다음과 같이 패키징합니다:

결과적으로 생성된 SQL 문은 다음과 같습니다:

2021-01-06 14:32:09.9505 [스레드] DEBUG DEBUG LogCenter - sql 문: SELECT TOP (1)
    [범위1]. [ID] [ID]로서,
    [범위1]. [이름] AS [이름]
    [dbo]에서 왔습니다. [잇스브세] AS [확장1]
    여기서 ([확장1].[ 이름] = @p__linq__0) OR (([Extent1].[ 이름은 null임) 그리고 (@p__linq__0 없음))
2021-01-06 14:32:09.9515 [스레드] DEBUG DEBUG LogCenter - sql 문:

2021-01-06 14:32:09.9525 [스레드] DEBUG DEBUG LogCenter - sql 문: -- p__linq__0: 'itsvse.com' (타입 = 문자열, 크기 = 4000)

2021-01-06 14:32:09.9525 [스레드] DEBUG DEBUG LogCenter - sql 문: -- 실행 중 2021-01-06 14:32:09 +08:00

2021-01-06 14:32:09.9545 [스레드] DEBUG DEBUG LogCenter - sql 문: -- 결과: SqlDataReader로 1ms 만에 완료됨

2021-01-06 14:32:09.9555 [스레드] DEBUG DEBUG LogCenter - sql 문:

2021-01-06 14:32:09.9555 [스레드] DEBUG DEBUG LogCenter - sql 문: 2021-01-06 14:32:09 +08:00에 연결 종료
Select 쿼리에는 nolock 키워드가 포함되어 있지 않습니다.

(끝)





이전의:.NET/C#은 BlockingCollection 기반의 간단한 로깅을 구현합니다
다음:.NET (CLS) 공개 언어 명세서
 집주인| 2021-1-6 14:53:17에 게시됨 |
사용법: Global.cs의 Application_Start()에 다음 문장을 추가하면, 생성된 SQL이 자동으로 with(nolock)로 추가됩니다.
//ef命令拦截器
DbInterception.Add(새로운 WithNoLockInterceptor());
SQL 문이 잠기야 한다면, 다음 확장을 추가하세요


1. 특수한 상황에서 인터넷에서 제공되는 정규 표현식의 오류 문제를 해결함

 집주인| 2021-1-10 10:27:32에 게시됨 |
SQL 스크립트 테스트:

검사 결과:

기본적으로 트랜잭션이 추가되지 않으며, 기본 격리 수준도 정확합니다:



지속 시간: 17561밀리초

IsolationLevel.ReadUncommitd의 격리 수준은 다음 이미지에 나타난 것입니다:



시간: 519 ms

근원:



 집주인| 2023-5-2 11:45:35에 게시됨 |
ADO.NET 설정은 더러운 읽기를 허용합니다읽기미, 코드는 다음과 같습니다:


다른 방법이 있는데, 멋진 코드는 다음과 같습니다:

두 가지 작문 시험 모두 문제가 없습니다.첫 번째 것을 직접 사용하는 것이 권장됩니다!!!


다른 글쓰기 방법:



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

Mail To:help@itsvse.com