Thumbnail
지식공유자의 깜짝할인 중(D-1)
개발 · 프로그래밍 데이터베이스

Entity Framework Core DB 성능 튜닝 (for SQL Server) 대시보드

(5)
4개의 수강평 ∙  44명의 수강생
20% 165,000원 132,000원

월 26,400원

5개월 할부 시
지식공유자: 김정선SQL
총 71개 수업 (14시간 35분)
수강기한: 
6개월
수료증: 발급
난이도: 
입문
-
초급
-
중급이상
지식공유자 답변이 제공되는 강의입니다
폴더에 추가 공유

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

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

✍️
이런 걸
배워요!
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 기초

안녕하세요
김정선SQL 입니다.
김정선SQL의 썸네일

(주)씨퀄로 대표컨설턴트/이사, 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분의 수업
이 강의는 영상, 수업 노트, 첨부 파일이 제공됩니다. 미리보기를 통해 콘텐츠를 확인해보세요.
섹션 0. 과정 소개
Intro 미리보기 02:04 입문자를 위한 사전 학습 자료 미리보기 04:23 과정 소개 미리보기 27:46
Demo용 SalesSimple DB 소개 16:34
Visual Studio Demo 프로젝트 소개 05:30
Visual Studio 구성 데모 및 LINQ 식 (입문자) 21:08
DB 성능 튜닝 핵심 요소 08:09
섹션 1. Code-First 성능 고려사항
Database 속성 튜닝 및 데이터 형식과 길이 07:27
복합 Key, Index 지정 및 외부(참조) 키 인덱스 10:17
Demo - Code-First 성능 고려사항 09:55
섹션 2. 쿼리 로깅과 성능 모니터링
쿼리 성능 모니터링과 분석용 도구 미리보기 11:28
Simple Logging 07:34
SQL Server 쿼리 추적 09:42
Dotnet-counters 02:43
BenchmarkDotNet 09:41
데이터 액세스 절차 개괄 - 쿼리 응답 시간(T) 소비 항목 03:56
섹션 3. DB Connection
연결 문자열(Connection String) 중요 항목 미리보기 07:51
DbContextOptionsBuilder 와 DbContextPool 05:16
DB Connection Open/Close 시점 이해 02:34
MARS(Multiple Active ResultSets) 연결 08:53
Demo 17:14
섹션 4. 데이터 조회 - 1부
소개 미리보기 05:05
동기 vs. 비동기 처리 32:01
임시 vs. 매개변수 쿼리 17:15
ToQueryString() 06:00
비 추적 쿼리 09:22
필요한 열만 SELECT (Projection) 06:21
Benchmark - 데이터 조회 방식 별 성능 09:46
IQueryable vs. IEnumerable 17:28
Where(), Find(), First() vs. FirstOrDefault(), SingleOrDefault() 18:06
FirstOrDefault() or SingleOrDefault()와 서브쿼리 이슈 11:57
SingleOrDefault() 및 SQL LIKE 구현 예제 08:42
EF.Functions for SQL Server와 SQL IN 조건, STRING_AGG() 함수 사용하기 19:36
섹션 5. 데이터 조회 - 2부
CROSS/INNER/OUTER JOIN 26:23
APPLY 구현 09:18
.Include(), .ThenInclude() 그리고 Split Queries와 EF Internal Buffering 23:04
Lazy Loading vs. Eager Loading 그리고 불필요한 중복 쿼리 지양 15:51
집합 연산(교집합/합집합/차집합) 그리고 중복(distinct) 처리 17:55
섹션 6. 데이터 조회 - 3부
인덱스 사용을 위한 필수 조건 SARG 07:31
Non-SARG 유형별 이해 35:22
섹션 7. 고급 쿼리 및 기타
Paging 쿼리 24:12
동적 검색 조건(일명 만능 조회) 쿼리 13:58
Compile Query 08:06
비동기 쿼리 중단하기 05:22
.Tag()로 쿼리 주석 달기 09:06
섹션 8. SQL 직접 사용
SQL 직접 사용 지원 함수 분류 13:41
Adhoc or Parameterization 쿼리 12:38
테이블 값 함수(TVFs) 호출 09:42
스칼라 타입(Non-Entity) 쿼리 호출 06:03
Entity 기준 저장 프로시저 호출 08:20
조회용 저장 프로시저 호출 08:50
다중 결과 집합 반환 저장 프로시저 호출 08:17
섹션 9. DML 작업 (INSERT/UPDATE/DELETE), EF 6 vs. EF7
단일 or Batch INSERT 19:52
대량 데이터 변경과 Batch 처리 05:37
EF Core 7의 향상된 SaveChanges() 15:21
단일 or Batch UPDATE 14:13
단일 or Batch DELETE 05:48
대량 업데이트용 ExecuteUpdate() or ExecuteDelete() 14:23
UPDATE or DELETE 문 직접 사용 05:59
섹션 10. 트랜잭션 및 잠금
DB 성능을 고려한 트랜잭션 처리 11:53
트랜잭션, 격리수준, Commit/Rollback/SavePoint 16:25
Read Committed 격리수준과 잠금 차단 15:27
Repeatable Read 격리수준 07:45
휴면 트랜잭션 문제 15:14
사례 – “휴면 트랜잭션” 성능 문제 08:41
조회(읽기) 전용 쿼리에서 차단 회피하기(NOLOCK or RCS) 24:59
섹션 11. 분산 트랜잭션(TransactionScope)
TransactionScope 클래스 성능 이슈, 조치, 관리 22:33
섹션 12. 부록
스칼라 값 사용자 정의 함수(UDFs) 호출 07:46
EF Core 낙관적 동시성 처리 지원 19:07
DbCommandInterceptor 상속 – 쿼리에 힌트 추가하기 09:18
Application 코드 수정없이 쿼리 힌트 설정하기 09:47
강의 게시일 : 2023년 03월 22일 (마지막 업데이트일 : 2023년 04월 08일)
수강평 총 4개
수강생분들이 직접 작성하신 수강평입니다.
5
4개의 수강평
5점
4점
3점
2점
1점
VIEW 추천 순 최신 순 높은 평점 순 낮은 평점 순 평점 순 높은 평점 순 낮은 평점 순
mook4506 thumbnail
5
정말 찾던 강의 였습니다. 감사합니다.
2023-06-23
지식공유자 김정선SQL
안녕하세요 mook4506님, 수강평 남겨주셔서 고맙습니다, 주변에도 소개 많이 부탁드립니다~ :D 김정선 드림
2023-06-23
yeonhong.min thumbnail
5
아주 상세한 설명 감합니다. 다만 이건 강의 문제가 아니고, 인프런 시스템 문제인데요. 수강평을 끝나고 나와야지 플레이 중간에 나오네요. 강의 내용 중간에 팝업이 뜨는게 당황스럽군요.
2023-03-26
지식공유자 김정선SQL
안녕하세요 민연홍님, 이 강의도 들으셨군요, 쑥쓰럽기도 하고 고맙기도 합니다 :D 수강평도 남겨주셔서 고맙습니다, 알려주신 시스템 관련 내용은 인프런 쪽에 전달하겠습니다. 건강하시고, 다음에 또 뵐게요~ 김정선 드림
2023-03-26
dreamania thumbnail
5
몇번씩 돌려가면서 시간가는줄 모르고 완강까지 달려왔네요^^ 이 강의 듣는 분들은 이미 컨설팅 받은 효과를 얻으실듯 강추!!!!라는 말로 부족!!!
2023-03-27
Jungwoo Kim thumbnail
5
DB 측면, 개발 측면을 모두 고민하고 개발할 수 있는 역량을 길러줄 수 있는 좋은 강의입니다!
2023-04-03
지식공유자 김정선SQL
Jungwoo Kim님, 부끄럽습니다, 좋은 평가 고맙습니다~ :D 김정선 드림
2023-04-03