1 / 39

강사 소개

SQL Server 저장 프로시저 성능 최적화 김정선 필라넷 / DB 사업부 / 수석 컨설턴트 삼성 SDS 멀티캠퍼스 / 전임 교수 Microsoft SQL Server MVP. 강사 소개.

elisha
Download Presentation

강사 소개

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. SQL Server 저장 프로시저 성능 최적화김정선필라넷 / DB 사업부 / 수석 컨설턴트삼성SDS 멀티캠퍼스 / 전임 교수Microsoft SQL Server MVP

  2. 강사 소개 김 정선Email: visualdb@unitel.co.krBlog: visualdb.onblog.com자격/인증 사항MCDBA MCITP Database AdministratorMicrosoft SQL Server MVP근무 이력 현) 필라넷(Feel@NET)/ DB 사업부 / 수석 컨설턴트 현) 삼성SDS 멀티캠퍼스 / 전임 교수 전) 삼성 중공업 조선해양사업본부 ECIM팀주요 업무SQL Server 컨설팅 / 기술지원 / 개발 / 교육강사 활동MSDN, TechNet, Devdays, MCPWorld, 등출판물SQL Server 2005 관리자 가이드 (MS) SQL Server 2005 개발자 가이드 (MS) SQL Server 2005 포켓 컨설턴트 관리자용(정보문화사)

  3. 목표 • 저장 프로시저의 실행 구조 및 환경 이해 • 저장 프로시저의 득과 실 이해 • 저장 프로시저의 성능 문제 요인 분석 • 재컴파일의 득과 실 이해

  4. 대상 기술범위: • 대상 • 현업 개발자 및 관리자 • 저장 프로시저 성능에 관심 있는 개발자 • 저장 프로시저 실행 구조, 환경 및 그 특징에 관심 있는 사용자 • 기술범위 • 쿼리 최적화기 • 저장 프로시저 성능 • Database API 성능

  5. 이 주제를 이해하는 데 필요한 지식 • SQL Server T-SQL Programming • 인덱스 • 쿼리 최적화기(Query Optimizer) • 저장 프로시저 • 데이터베이스 프로그래밍 Level 300

  6. 목차 • 저장 프로시저 이해 • 저장 프로시저 성능 문제 분석 및 해결 방안

  7. 1장 저장 프로시저 이해 각인(刻印), “새끼 오리들은 태어나는 순간(결정적 시기)에 처음 본움직이는 대상을 마치 어미처럼 평생을 따른다.”

  8. 1장. 목차 • 응용 프로그램 쿼리 유형 • 작업 부하 유형 • 컴파일 비교 - VB vs. Ad hoc Query vs. 저장 프로시저 • 프로시저 캐시 • 저장 프로시저 처리 단계 • 저장 프로시저 특징에 대한 고민 • 실행 계획재사용 부작용 • Recompile 이슈 • Adhoc vs. Prepared • 성능 추적 및 모니터링

  9. 응용 프로그램 쿼리 유형 • Presentation • Middle Tier • SQL Server 저장 프로시저 3 dbo.up_OrdersInfo 2 Parameterized *RPC 이벤트 SELECT ... FROM dbo.Orders WHERE OrderID = @OrderID 영업 Database 저장 프로시저(dbo.up_OrdersInfo) 1 Adhoc SELECT ... FROM dbo.Orders WHERE OrderID= 10248 *Batch 이벤트

  10. 작업 부하 유형

  11. 동일 쿼리 기준 = 정확한 구문 .exe 재실행 / 재컴파일 이진코드 생성 컴파일 최적화 .exe 실행 코드작성 파일 저장 아니요 (옵션) Cache 저장 컴파일 비교, VB vs. Ad hoc Query • VB • Ad hoc 작성 단계 실행 단계 • 컴파일 단계 동일쿼리가 Cache에 존재? 최적화 컴파일 단계 실행 계획 결정 컴파일 실행 단계 예 쿼리 실행

  12. 동일 쿼리 기준 = 프로시저 이름 DB 저장 코드작성 파일 저장 최적화 컴파일 이진코드 생성 .exe 실행 .exe 재실행 / 재컴파일 코드작성 아니요 아니요 예 Cache 저장 컴파일 비교, VB vs. 저장 프로시저 • VB • 저장 프로시저 작성 단계 작성 단계 • 컴파일 단계 실행 단계 컴파일 단계 최적화 동일Proc가 Cache에 존재? 실행 계획 결정 컴파일 Cache Plan 재사용 가능? 실행 단계 Recompile 프로시저 실행 예

  13. 프로시저 캐시 • master.dbo.syscacheobjects

  14. 데모 • 응용 프로그램 쿼리 유형별 Caching • 응용 프로그램 쿼리 유형 • 프로시저 캐시 살펴보기 • 작업 부하 유형별 Caching 처리

  15. 저장 프로시저 처리 과정-전체 [sysobjects]: Name, type, etc. [syscomments]: Text of object [syscolumns]: Parameter list [sysdepends]: Object dependencies Parsing 생성 Resolution Resolution* 실행(처음 or 재컴파일) Optimization Compiled plan placed inunified cache Compilation

  16. Resolution • 저장 프로시저를 생성하는 시점의 참조하는 모든 개체를 해석하는 단계(존재 여부 등) • 개체가 존재하지 않아도 생성 작업은 성공 • 호출되는 프로시저가 존재하지 않으면 오류 발생 • “존재하지 않는 개체 ‘?'에 의존하고 있으므로 현재 저장 프로시저의 sysdepends에 행을 추가할 수 없습니다. 저장 프로시저는 만들어집니다.” – SQL Server 2000 메시지 • 장점: 순환 참조 허용! • 참조되는 테이블, 뷰, 함수 등이 존재하지 않는 경우엔 오류 발생 안 함(6.5 호환 모드 제외) • 개체를 삭제하기 전에 sp_depends로 종속 관계 확인

  17. Compilation/Optimization • 제공된 파라미터에 기반 • 이후 실행에서 해당 계획을 재사용 • 모든 코드에 대해 최적화 수행 • (중요)코드 모듈화가 필요 • 잘못 작성된 코드는 과도한 잠금/차단을 유발 가능 • 과도한 재컴파일 또한 성능 저하를 유발 가능

  18. Execution/Recompilation • 계획이 캐시에 없으면 새로운 계획을 컴파일하고 캐시에 적재해서 실행 • 캐시에 플랜이 부적합하거나 캐시에서 제거되는 상황 • 서버 재 시작 • 낮은 재사용으로 인한 퇴출 • DBCC FREEPROCCACHE 등의 명령문 실행 (필요한 경우도 있다) • 그 외에도 다양한 상황들이 존재 – 관리자 유의 사항 • 테이블 데이터 - 변경 • AutoStats 알고리즘, Q195565 INF: How SQL Server 7.0 and SQL Server 2000 Autostats Work 참조

  19. 저장 프로시저 특징에 대한 고민 • T-SQL의 거의 모든 구문을 사용한 절차적 프로그래밍 가능 • VB? or ASP?...NO, T-SQL • 미리 작성해서 DB에 저장한 쿼리 개체 • DB 용량이 커진다? 그럼, 다른 건 안 커지나? • 초기 실행 시 컴파일을 수행하고 실행 계획 산출 • 초기라는 시점의 의미는? Cache에 없으면 초기? • 실행 계획(직렬/병렬)을 Procedure Cache에 저장 • Procedure Cache가 커진다? 안 쓰면 작아지나? • 모든 사용자가 저장된 실행 계획을 공유하고 재사용 가능 • 재사용해서는 안 된다면? 공유하고 싶지 않다면? • 자동/수동으로 재컴파일 요청 시 재컴파일 수행 • 재컴파일은 컴파일과 다르다!, 왜 재컴파일을 하는가? 왜 해야하는가? • 자동/수동으로 Procedure Cache 제거 시 컴파일 수행 • 실제 서버에서 하지 말라?...청개구리, 필요할 때도 있을까?

  20. 선택도 = 1/1,000 • 실행계획 = Table Scan 실행 계획 재사용 부작용 • 각인(刻印)의 부작용 • 새끼 오리가 태어나서 처음 강아지를 본다면? • 실행 계획 재사용 부작용 • 정리 • 필요 시 쿼리가 서로 다른 실행 계획을 가져야 하는 경우 • 쿼리 실행 계획 자체가 분리될 수 있어야 한다. 초기 컴파일 Recompile 하면? 실행 • 선택도 = 100/1,000 • 실행계획 = Table Scan • 선택도 = 1/1,000 • 실행계획 = Index Seek

  21. 데모 • 실행 계획 재사용 • 실행 계획 재사용 유형 • 재사용 부작용

  22. Recompilation 이슈 • 재컴파일 = 최적화 • 최적화 = 재컴파일 • 언제 재컴파일이 일어나길 원하나요? • 재컴파일에는 어떤 옵션들이 있는지 알고 있나요? • 재컴파일이 필요하다고 판단하는 기준은 무엇인가요? • 프로시저 전체가 재컴파일이 되길 원하나요? 아니면 일부만? • 테스트하고 검증할 수 있나요?

  23. 언제 Recompile이 필요한가? • Cache 실행 계획이 비 효율적이라고 판단되는 경우 • 새로 실행 계획을 만들도록 요구 받는 경우 • 프로시저 내 쿼리가항상 동일한 실행 계획을 가지지 않는 경우 • 파라미터에 따라 실행 계획이 달라지는 경우 • 데이터 변경이 이루어지는 경우 (예, 반복적인 배치 작업) • 재컴파일 비용이 잘못된 실행 계획으로 인한 쿼리 실행 비용보다 확연히 적은 경우! • 왜? • 더 좋은실행 계획을 도출할 수 있다 • 잘못된 실행 계획으로 서버의 장애가 발생할 수 있다 • 재사용을 위해서 계획을 저장하는 것이 항상 좋은 것은 아니다.

  24. 동적(Ad hoc) vs. 파라미터(Prepared) 쿼리 • 동적으로 구성된 쿼리 • 여러 가지 표현들: Ad hoc, Hard-coded, Dynamic, Embedded • 종류 • 순수한 Ad hoc 쿼리 • 자동 파라미터화 쿼리로 자동 처리도 가능 (일명 Safe Auto-params) • 컴파일 비용 반복 소비 • 순수 Ad hoc으로 Caching될 경우 과도한 Cache 소비 원인 • 이유: 순수 Query 그 자체로 재사용 가능하므로...정말? • 파라미터화 쿼리 • 여러 가지 표현들: Parameterized, Prepared, Static • 종류 • sp_executesql 같은 명령 직접 사용 • Database API (ADO, ADO.NET) 를 통해서 역시 같은 명령들이 간접 호출 • Ad hoc 과 Procedure 의 중간 형태 • 구문 별 Cache 처리 및 재사용 기능 제공 • 구문이나 파라미터 형식, 길이 등이 다를 경우에도 개별 Cache 처리 • 주의. 프로시저와 같은 재사용 문제 내포

  25. SP vs. Prepared Sql Plan vs. EXEC • 자동 파라미터화 • 저장 프로시저 vs. sp_executesql • sp_executesql vs. EXEC (프로시저 내에서)

  26. 데모 • 재사용 비교 • Proc Plan vs. Prepared Plan

  27. 성능 추적 및 모니터링 • master.dbo.syscacheobjects • 각 DB별 Cache Plan의 유형, 소비되는 크기, 재사용 률 등의 진단 분석 • 프로필러 혹은 SQL Trace • 성능 카운터 • T-SQL 명령 • DBCC CACHESTATS, DBCC PROCCACHE, DBCC MEMORYSTATUS

  28. 세션 요약 • 저장 프로시저는 처음 실행 시(혹은 재컴파일시)에 실행 계획을 결정한다. • 한 번 결정된 실행 계획은 이후 실행에서 계속 재사용되어진다. • 실행 계획 재사용으로 인한 부작용은 심각한 성능 문제를 유발할 수 있다. • 재컴파일에 필요성과 함께 그 문제점을 이해한다. • 저장 프로시저 실행 구조의 대한 이해를 통해서 문제점을 해결할 수 있다.

  29. 추가 자료들 • Microsoft SQL Server Query Processor Internals and Architecturehttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnsql7/html/sqlquerproc.asp • (기술자료) 저장 프로시저 재컴파일 문제 해결http://support.microsoft.com/kb/243586/ko • Microsoft SQL Server 성능 튜닝 Technical ReferenceWhalen, Garcial, Deluca, Thompson | 정보문화사 • Inside Microsoft SQL Server 2000Kalen Delaney | 정보문화사 • SQL Server 최적화 튜닝정원혁, iti 교육센타 • Programming a Microsoft SQL Server 2000 Database 2073, MOC 교육 과정

  30. 참고자료 : IT 전문가를 위한 Microsoft 인증

  31. 여러분의 Microsoft 기술 능력 평가 Microsoft Skills Assessment무엇인가? • 현재 제품 및 기술 솔루션에 대한 능력 평가 • Windows Server 2003, Exchange Server 2003, Windows Storage Server 2003, Visual Studio .NET, Office 2003 • 무료, 온라인, 누구나 사용 가능 • 평가결과를 기초로 Microsoft 교육 프로그램을 제안합니다. • 평가항목과 최고점수 표시 • 방문하세요!www.microsoft.com/assessment

  32. Microsoft Certified Systems Administrator(MCSA)가되자! • MCSA 무엇인가? • Microsoft Windows Server 기반의 시스템, 네트워크 유지보수와 관리를 하는 IT 전문가를 위한 인증제도 • 어떻게 MCSA(Windows Server 2003) 합격? • 3개 코어 시험 통과 • 1개 선택 과목 • 자세한 정보는 아래 URL를 참고하세요? www.microsoft.com/mcsa

  33. Microsoft Certified Systems Engineer (MCSE)가 되자! • MCSE 무엇인가? • Microsoft Windows Server System 기반의 비즈니스 솔루션, 인프라스트럭처의 설계, 도입계획, 도입방법, IT 운영자의 요구분석 능력을 인증하는 제도 • 어떻게MCSE(Microsoft Windows 2003) 합격? • 6개 코어 시험 통과 • 1새 선택 시험 통과 • 자세한 정보는 아래 URL를 참고하세요? www.microsoft.com/mcse

  34. Microsoft Certified Desktop Support Technician(MCDST) • What is the MCDST certification? • Microsoft Windows 오퍼레이팅 시스템에서 실행되는 데스크톱 환경의 문제해결 및 전문가의 기술지원 능력을 인증하는 제도 • 어떻게MCDST(Microsoft Windows XP) 합격? • 2개 코어 시험 통과 • 오퍼레이팅 시스템 • 데스크톱 애플리케이션 지원 • 자세한 정보는 아래 URL를 참고하세요? www.microsoft.com/mcse

  35. Specialization인증을 도전하세요. • MCSA/MCSE specializations? • IT 전문가를 위한 메시징, 보안 전문분야의 인증제도 • 현재 인증 가능한 전문? • MCSA: Security –MCSA: Messaging • MCSE: Security –MCSE: Messaging • 자세한 정보는 아래 URL를 참고하세요? www.microsoft.com/mcsaorwww.microsoft.com/mcse

  36. TechNet에 가입하세요.최신 기술 뉴스를 받고 싶으세요? 평가기간 없는 소프트웨어!: Technet Plus 가입자는 평가 목적으로 Microsoft 정품제품을 다양하게 시험을 할 수 있다. 무료 기술지원: 가입자는 2개의 무료 기술지원을 받을 수 있으며, 중요한 문제해결을 위해 시간을 절약할 수 있다. 최신 TechNet 정보를 오프라인에서 사용: TechNet 사이트의 Microsoft 평가, 설치, 솔루션의 정보를 CD 또는 DVD로 받을 수 있다. www.microsoft.com/technet/subscriptions

  37. 어디서 정보를 얻을 수 있나요? • 웹 캐스트 또는 온라인 채팅www.microsoft.com/technet/community/chats www.microsoft.com/technet/community/webcasts • 뉴스그룹 목록 www.microsoft.com/technet/community/newsgroups • Microsoft 커뮤니티 사이트 www.microsoft.com/technet/community • 커뮤니티 이벤트www.microsoft.com/technet/community/events • 커뮤니티 칼럼 www.microsoft.com/technet/community/columns

More Related