개발 · 프로그래밍

/

데이터베이스

Entity Framework Core DB 성능 튜닝 (for SQL Server)

.NET Entity Framework Core로 데이터베이스 프로그래밍을 구현할 때 DB와 쿼리 성능 이슈들을 이해하고 이를 개선해서 더 좋은 성능과 더 안정적인 EF Core 프로그래밍을 할 수 있는 방법들을 배울 수 있습니다.

(5.0) 수강평 5개

수강생 60명

Thumbnail

중급자를 위해 준비한
[데이터베이스] 강의입니다.

이런 걸
배워요!

  • EF Core DB Model 성능 고려 사항

  • EF Core 자동 생성 쿼리의 성능 이슈와 해결 방안 학습

  • DB 성능 향상에 필요한 EF Core 및 SQL Server 기능 학습

.NET EF/EF Core 기반 성능 튜닝, 
더 안정적으로 & 더 강력하게! 

더 강력한 .NET 개발, 
핵심은 쿼리에 있습니다!

“EF Core에서 생성되는 모든 쿼리가 좋은 형태는 아니다.”

.NET EF 또는 EF Core(혹은 유사한 ORM 환경)를 사용한 애플리케이션에서 자동 생성되는 쿼리나 쿼리의 처리 방식이 SQL Server 입장에서 적절치 않은 관계로 데이터베이스나 쿼리 성능의 영향을 끼치는 경우가 적지 않습니다. 데이터 변경과 트랜잭션 처리에서는 더 민감합니다. 더불어 쿼리의 추적, 수정과 같은 관리의 어려움으로 인해 DB 운영자들이 불편함을 호소하는 것이 일반적입니다.

.NET Entity Framework Core 기반 DB 프로그래밍 성능 튜닝 방법

이 강의에서는 .NET 개발자에게 좋은 프로그래밍 도구인 EF Core를 더 성능 좋은 쿼리, 더 안정적인 처리 방식으로 구현할 수 있도록 현재의 성능 이슈를 이해하고 그 해결 방안을 공유하고자 합니다 더불어 최신 버전(V7)의 향상된 기능들도 소개합니다.


이런 분들께 
추천합니다.

.NET 개발자

EF Core 개발자 
또는 사용자 

EF 또는 EF Core 
환경에서 운영되는 
시스템 관리자 

EF Core의 DB 성능에 
관심 있는 사용자 

💬 “.NET 개발 초보이고 EF Core는 처음인데 수강을 해도 될까요?”

.NET과 EF Core의 경험이 있으면 내용을 이해하는데 수월하실 겁니다. 다만 EF Core가 처음인 사용자를 위해서 도움이 될 만한 학습 자료들도 같이 소개했습니다. 선수 학습 자료로 참조해서 미리 학습하시면 도움이 되실 겁니다. 또한 예제 프로젝트가 콘솔 애플리케이션으로 구성되어 있어 상대적으로 쉽게 접근할 수 있습니다.

💬 “EF Core 버전에 따라서도 차이가 있을까요?”

  자료와 데모는 EF5부터 최근의 EF7까지를 다루며, 새로운 버전의 개선된 기능과 차이점도 소개하므로 구분해서 볼 수 있습니다. 중요 기능에 대해서는 도입 버전을 함께 기술했으므로 판단에 도움이 되실 겁니다.


한 단계 성장한 스스로를
만날 수 있습니다.

EF Core에서 성능이 더 뛰어난, 적절한 쿼리를 생성하도록 프로그래밍할 수 있습니다.

EF Core에서 Insert/Update/Delete 및 트랜잭션, 잠금 처리를 보다 안정적으로 구현할 수 있습니다.

성능 이슈가 예상되는 쿼리에 대해 DB 담당자 및 유관 부서, 실무자 등과 협의하고 문제를 방지할 수 있습니다.

SQL Server 쿼리 추적

집합 연산 및 중복(distinct) 처리

💡 실무 개발에 꼭 필요한 쿼리 성능 이슈 해결 노하우

.NET EF Core의 구현 방식 또는 Lambda/LINQ 식의 형태에 따라 자동 생성되는 쿼리의 유형이 달라지고 이로 인해 쿼리 성능이나 DB 성능에 영향을 미칩니다. 본 교육에서는 EF Core 구현에 따른 자동 생성 쿼리의 내용과 성능 상의 이슈들을 살펴보고 이를 해결하기 위한 방법들을 배울 수 있습니다. 또한 데이터 변경(DML) 작업이나 트랜잭션 처리 이슈로 인해 실무에서 발생되는 중요 문제들을 이해할 수 있습니다.

특히 SQL Server를 전문적으로 오랫동안 컨설팅하고 강의해 온 지식공유자가 각 주제별로 실무에서 공통적으로 나타나는 상황을 예제로 사용하므로 실무 활용에 직접적으로 도움이 될 수 있도록 구성하였습니다.

상세 커리큘럼 ✅

1) 과정 소개

  1. Intro
  2. 입문자를 위한 사전 학습 자료
  3. 과정 소개
  4. Demo용 SalesSimple DB 소개
  5. Visual Studio Demo 프로젝트 소개
  6. Visual Studio 구성 데모 및 LINQ 식 (입문자)
  7. DB 성능 튜닝 핵심 요소

2) Code-First 성능 고려사항

  1. Database 속성 튜닝
  2. 데이터 형식과 길이
  3. 복합 Key 또는 Index 지정
  4. 외부(참조) 키 지정 시 인덱스 생성

3) 쿼리 로깅과 성능 모니터링

  1. 쿼리 성능 모니터링과 분석용 도구
  2. Simple Logging
  3. SQL Server 쿼리 추적
  4. Dotnet-counters
  5. BenchmarkDotNet
  6. 데이터 액세스 절차 개괄 - 쿼리 응답 시간(T) 소비 항목

4) DB Connection

  1. 연결 문자열(Connection String) 중요 항목
  2. DbContextOptionsBuilder
  3. DbContextPool
  4. DB Connection Open과 Close 시점 이해
  5. MARS(Multiple Active ResultSets) 연결

5) 데이터 조회 - 1부

  1. 소개
  2. 동기 vs. 비동기 처리
  3. 임시 vs. 매개변수 쿼리
  4. ToQueryString()
  5. 비 추적 쿼리
  6. 필요한 열만 SELECT (Projection)
  7. Benchmark - 데이터 조회 방식 별 성능
  8. IQueryable vs. IEnumerable
  9. Where(), Find(), First() vs. FirstOrDefault(), SingleOrDefault()
  10. FirstOrDefault()/SingleOrDefault()와 서브쿼리 이슈
  11. SingleOrDefault() 및 SQL LIKE 구현 예제
  12. EF.Functions와 SQL IN 조건, STRING_AGG() 함수 사용하기

6) 데이터 조회 - 2부

  1. CROSS/INNER/OUTER JOIN
  2. APPLY 구현
  3. .Include(), .ThenInclude() 그리고 Split Queries와 EF Internal Buffering
  4. Lazy Loading vs. Eager Loading 그리고 불필요한 중복 쿼리 지양
  5. 집합 연산(교집합/합집합/차집합) 그리고 중복(distinct) 처리

7) 데이터 조회 - 3부

  1. 인덱스 사용을 위한 필수 조건 SARG
  2. Non-SARG 유형별 이해

8) 고급 쿼리 및 기타

  1. Paging 쿼리
  2. 동적 검색 조건(일명 만능 조회) 쿼리
  3. Compile Query
  4. 비동기 쿼리 중단하기
  5. .Tag()로 쿼리 주석 달기

9) SQL 직접 사용

  1. SQL 직접 사용 지원 함수 분류
  2. Adhoc or Parameterization 쿼리
  3. 테이블 값 함수(TVFs) 호출
  4. 스칼라 타입(Non-Entity) 쿼리 호출
  5. Entity 기준 저장 프로시저 호출
  6. 조회용 저장 프로시저 호출
  7. 다중 결과 집합 반환 저장 프로시저 호출

10) DML 작업 (INSERT/UPDATE/DELETE), EF 6 vs. EF7

  1. 단일 or Batch INSERT
  2. 대량 데이터 변경과 Batch 처리
  3. EF Core 7의 향상된 SaveChanges()
  4. 단일 or Batch UPDATE
  5. 단일 or Batch DELETE
  6. 대량 업데이트용 ExecuteUpdate() or ExecuteDelete()
  7. UPDATE or DELETE문 직접 사용

11) 트랜잭션 및 잠금

  1. DB 성능을 고려한 트랜잭션 처리
  2. 트랜잭션, 격리수준, Commit/Rollback/SavePoint
  3. Read Committed 격리수준과 잠금 차단
  4. Repeatable Read 격리수준
  5. 휴면 트랜잭션 문제
  6. 사례 – “휴면 트랜잭션” 성능 문제
  7. 조회(읽기) 전용 쿼리에서 차단 회피하기(NOLOCK or RCS)

12) 분산 트랜잭션(TransactionScope)

  1. TransactionScope 클래스 성능 이슈, 조치, 관리

13) 부록

  1. 스칼라 값 사용자 정의 함수(UDFs) 호출
  2. EF Core 낙관적 동시성 처리 지원
  3. DbCommandInterceptor 상속 – 쿼리에 힌트 추가하기
  4. Application 코드 수정없이 쿼리 힌트 설정하기

Q&A 💬

Q.  비전공자도 들을 수 있는 강의인가요?

 .NET과 SQL의 기초가 있다면 들을 수 있습니다, 조금 부족하더라도 수강 중에 필요한 기초를 병행 학습하시면 될 겁니다.

Q. 강의를 듣기 전 준비해야 할 것이 있나요?

혹시 .NET EF Core 입문자라면 과정 앞 부분에서 소개하는 사전 학습용 자료를 살펴보고 따라해 보십시오. 데모용 DB, EF Core 샘플 프로젝트를 포함한 기타 자료들도 미리 다운로드 해 두시면 됩니다. 데모 DB 구성과 내용은 교육에서 설명 드립니다. 또한 DB로 사용하기 위한 SQL Server와 SSMS와 같은 관리 도구도 필요하니 미리 설치해 두시기 바랍니다

Q. 수강 전 갖춰야 할 환경이 있나요?

Visual Studio (Community Edition 이상)와 SQL Server가 필요합니다. 가능하면 최신 버전이 좋습니다. 과정 앞 부분에서 .NET 입문자를 위해 Visual Studio 다운로드 및 구성에 대해서도 간략하게 소개와 데모를 보여드립니다


이 강의의 지식공유자를 
소개합니다.

김정선SQL

이력 사항

  • ㈜씨퀄로(www.sqlroad.com ) 대표컨설턴트/이사 (2005년부터)
    • SQL Server 컨설팅, 기술지원, 강의, 솔루션 개발
  • SQLBigEyes (SQL Server 성능 모니터링 솔루션, www.sqlbigeyes.com ) 개발   
    • SQLBigEyes (SQL Server 성능 모니터링 솔루션, www.sqlbigeyes.com ) 개발
  • Microsoft Data Platform MVP
    • 2002년부터 (현재 2022년 기준) 21년간 수상, 2008년 MVP 공로상 수상

자격 및 인증

  • MCT, Azure DBA, MCITP 외 다수

강의 활동 (1999년부터)  

외부 활동

  • SQL Server MVP Deep Dives Vol 2(Manning Pubs) 공동 저자 참여
  • 김정선의 SQL Server 컨설팅 이야기 시즌 12년간 진행 중
  • SQL Unplugged 세미나 5년간 진행
  • SQL PASS Korea Chapter Leader
  • Microsoft Ignite, BITEC, Tech Camp, MVP Camp, TechEd, MSDN 등 Speaker 참여

함께 보면 좋은 강의

이런 분들께
추천드려요!

학습 대상은
누구일까요?

  • EF Core 또는 EF 개발자

  • EF Core 애플리케이션이 적용된 DB 운영자 (SQL Server)

  • EF Core DB 성능에 관심 있는 사용자

선수 지식,
필요할까요?

  • .NET EF Core 기초

  • SQL Server 기초

(주)씨퀄로 대표컨설턴트/이사, SQLBigEyes 솔루션 개발자
Microsoft Data Platform MVP (Award, 2002 이후~현재)
MCT, Azure DBA, MCITP, MCDBA
SQL PASS Korea Chapter Leader

Email: jskim@sqlroad.com
Homepage: www.visualdb.net (인프런 쿠폰 코드 제공)
Youtube: 김정선 SQL TV
강의: 스킬서포트교육센터@서울

커리큘럼

전체

71개 ∙ (14시간 35분)

수업 자료

가 제공되는 강의입니다.

강의 게시일: 
마지막 업데이트일: 

수강평

아직 충분한 평가를 받지 못한 강의입니다.
모두에게 도움이 되는 수강평의 주인공이 되어주세요!