Db
Sponsored Links
This presentation is the property of its rightful owner.
1 / 48

성대중 필라넷 / DB 사업부 책임컨설턴트 PowerPoint PPT Presentation


  • 114 Views
  • Uploaded on
  • Presentation posted in: General

PASS2006 기획시리즈 #2 커서기반솔루션과 집합기반솔루션의 비교. 성대중 필라넷 / DB 사업부 책임컨설턴트. 강사 소개.

Download Presentation

성대중 필라넷 / DB 사업부 책임컨설턴트

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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


PASS2006 기획시리즈#2커서기반솔루션과 집합기반솔루션의 비교

성대중

필라넷 / DB사업부

책임컨설턴트


강사 소개

성대중 Email: djsung@feelanet.comBlog: blog.naver.com/dreamania_73근무 이력 현) 필라넷 / DB사업부 / 책임 컨설턴트 전) 영림원 소프트랩 ERP컨설턴트 / 개발자주요 업무SQL Server컨설팅 / 기술지원 / 개발 / 교육강사 활동SQL Server아카데미,TechNet웹캐스트, HandsOnLab등출판물SQL Server 2005관리자 가이드 (Microsoft Korea)SQL Server 2005개발자 가이드 (Microsoft Korea)SQL Server 2005포켓 컨설턴트 관리자용(정보문화사)inside SQL Server 2005 T-SQL Programming(정보문화사)


PASS 소개

  • Professional Association for SQL Server

  • 전세계 SQL Server전문가 커뮤니티

  • 매년 정기적으로 PASS Submit행사 진행

    • 미국, 유럽, 일본 등

  • SQL Server관련 정보 교환/멤버십 서비스

  • www.sqlpass.org웹사이트 참조


PASS 2006 - Seattle


목표

  • 커서 기반 솔루션과 집합 기반 솔루션의 선택기준을 제시

    • 커서 기반 솔루션과 집합 기반 솔루션 비교

    • 집합 기반 솔루션 시나리오

    • 커서 기반 솔루션 시나리오

    • 커서를 대체하기 위한 SQL Server 2005 새로운 기능

  • 관건은 프로그래머의 성숙도


이 주제를 이해하는 데 필요한 지식

  • 커서기반(Cursor-Based)쿼리에 대한 기본 지식

  • 집합기반(Set-Based)쿼리에 대한 기본지식

  • SQL Server 2005의 새로운 T-SQL 구문

Level 200


목차

  • 커서 기반 솔루션과 집합기반 솔루션 비교

  • 집합 기반 솔루션 시나리오

  • 커서 기반 솔루션 시나리오


커서기반 솔루션과 집합기반 솔루션 비교배경지식

  • 커서 기반 솔루션은 절차적/반복적 로직 사용

  • 집합 기반 솔루션은 다수의 대안 중에서 최적의 접근방법을 적용(집합적 로직)

  • 집합기반 솔루션의 장점

    • 행 단위 처리의 작업부하 제거

    • 쿼리 최적화 프로그램에서 최적의 실행계획을 선택가능

    • “어떻게”가 아니라 “무엇을”에 집중

    • 더 적은 코드, 유지보수 용이

  • 커서기반 솔루션의 장점

    • 각 행별로 처리해야 하는 시나리오에 적합

    • 정렬 기준 액세스가 가능


데모

커서의 작업부하


목차

  • 커서 기반 솔루션과 집합기반 솔루션 비교

  • 집합 기반 솔루션 시나리오

  • 커서 기반 솔루션 시나리오


집합기반 솔루션 시나리오집합기반 솔루션

  • 관계형 데이터베이스의 기본 전제

  • 대부분의 비즈니스 요구사항은 집합 기반 솔루션으로 해결가능

  • 더 적은 코드, 더 적은 유지보수 노력

  • 대부분 더 빠른 성능

  • 절대는 없다!


집합기반 솔루션 시나리오시나리오-활동중지상태의 거래처 찾기

  • 요구사항:

    • Shippers테이블과 Orders테이블 사용

    • 2001 년 1월 1일 이후 활동중지상태의 거래처 찾기

    • 활동중지상태의 정의

      • 2001 년 1월 1일 이후 주문 건이 없는 거래처

    • 주문 건이 없는 신규 거래처는 무시

  • 전제조건

    • 최적화된 인덱스 존재: Orders(shipperid, orderdate)


집합기반 솔루션 시나리오커서기반 솔루션(27초)

DECLARE @sid AS VARCHAR(5), @od AS DATETIME,

@prevsid AS VARCHAR(5), @prevod AS DATETIME;

DECLARE ShipOrdersCursor CURSOR FAST_FORWARD FOR

SELECT shipperid, orderdate FROM dbo.Orders

ORDER BY shipperid, orderdate;

OPEN ShipOrdersCursor;

FETCH NEXT FROM ShipOrdersCursor INTO @sid, @od;

SELECT @prevsid = @sid, @prevod = @od;

WHILE @@fetch_status = 0

BEGIN

IF @prevsid <> @sid AND @prevod < '20010101' PRINT @prevsid;

SELECT @prevsid = @sid, @prevod = @od;

FETCH NEXT FROM ShipOrdersCursor INTO @sid, @od;

END

IF @prevod < '20010101' PRINT @prevsid;

CLOSE ShipOrdersCursor;

DEALLOCATE ShipOrdersCursor;


집합기반 솔루션 시나리오집합기반 솔루션#1

  • 경과시간 : 1 초

  • 논리적 읽기: 2,730 페이지

솔루션 쿼리

SELECT shipperid

FROM dbo.Orders

GROUP BY shipperid

HAVING MAX(orderdate) < '20010101';

실행계획

성능측정결과


집합기반 솔루션 시나리오집합기반 솔루션#2

솔루션 쿼리

  • 경과시간 : 1 초, 논리적 읽기: 2,730

SELECT shipperid

FROM (SELECT shipperid,

(SELECT MAX(orderdate)

FROM dbo.Orders AS O

WHERE O.shipperid = S.shipperid) AS maxod

FROM dbo.Shippers AS S) AS D

WHERE maxod < '20010101';

실행계획

성능측정결과


집합기반 솔루션 시나리오집합기반 솔루션#3

솔루션 쿼리

SELECT shipperid

FROM (SELECT shipperid,

(SELECT MAX(orderdate)

FROM dbo.Orders AS O

WHERE O.shipperid = S.shipperid) AS maxod

FROM dbo.Shippers AS S) AS D

WHERE COALESCE(maxod, '20010101') < '20010101';

실행계획

성능측정결과

  • 경과시간 : 50 ms 이하, 논리적 읽기: 36


집합기반 솔루션 시나리오집합기반 솔루션#4

솔루션 쿼리

SELECT shipperid

FROM dbo.Shippers AS S

WHERE NOT EXISTS

(SELECT * FROM dbo.Orders AS O

WHERE O.shipperid = S.shipperid AND O.orderdate >= '20010101')

AND EXISTS

(SELECT * FROM dbo.Orders AS O WHERE O.shipperid = S.shipperid);

실행계획

성능측정결과

  • 경과시간 : 50 ms 이하, 논리적 읽기: 36


집합기반 솔루션 시나리오집합기반 솔루션#4

솔루션 쿼리

SELECT shipperid

FROM (SELECT shipperid,

(SELECT TOP (1) orderdate

FROM dbo.Orders AS O

WHERE O.shipperid = S.shipperid

ORDER BY orderdate DESC) AS maxod

FROM dbo.Shippers AS S) AS D

WHERE maxod < '20010101';

실행계획

성능측정결과

  • 경과시간 : 50 ms 이하, 논리적 읽기: 36


데모

  • 집합기반 솔루션 시나리오

    • 활동중지상태의 거래처찾기

      (커서 제거 튜닝사례)


목차

  • 커서 기반 솔루션과 집합기반 솔루션 비교

  • 집합 기반 솔루션 시나리오

  • 커서 기반 솔루션 시나리오


커서 기반 솔루션 시나리오커서 기반 솔루션

  • 제한된 용도로 사용

  • 행 단위 처리가 필요한 경우

    • 테이블의 행별로 저장 프로시저를 호출해야 하는 경우

    • 테이블의 행별로 결과집합을 반환해야 하는 경우

  • 정렬기준 액세스가 필요한 경우

  • 대부분은 집합기반 솔루션으로 전환가능

  • 커서기반솔루션이 더 빠른 특이한 경우 존재


커서 기반 솔루션 시나리오행 단위 처리

  • 정말 행 단위 처리가 필요한가?

    • 집합기반 솔루션으로 전환가능한지 확인

  • 대안

    • 커서보다 기준으로 한 루프구조가 더 빠르다!

    • SQL Server 2005의APPLY테이블 연산자

      예제)

SELECT F.*

FROM dbo.T1

CROSS APPLY dbo.fn1(T1.col1, T1.col2) AS F;


데모

  • 행 단위 처리

    • 커서와 WHILE LOOP비교

    • APPLY테이블 연산자


커서 기반 솔루션 시나리오정렬 기준 액세스

  • 커서를 사용하면 정렬된 순서로 액세스 가능

    • 집합기반 솔루션에서는 명시적으로 ORDER BY절을 지정하지 않는 한 정렬 순서를 보장하지 않음

    • 커서의 작업부하보다 집합기반 솔루션에서 데이터를 처리하기 위해 스캔 해야 하는 작업부하가 더 큰 경우에는 커서 기반 솔루션이 더 빠르다

  • 정렬 기준 액세스가 필요한 사례

    • 누적 집계

    • 매핑 문제

  • 정렬기준 액세스를 지원하기 위한 새로운 기능


커서 기반 솔루션 시나리오정렬 기준 액세스를 지원하기 위한 새 기능

  • ANSI에서도 정렬기준액세스 지원 기능 필요 인정

  • OVER절은 순위, 집계함수에서 정렬기준 액세스를 지원하기 위한 ANSI 표준

  • SQL Server 2005에서는 순위함수에서만 OVER절을 지원

  • SQL Server 2005에서는 APPLY테이블 연산자 지원 (T-SQL확장기능)


커서 기반 솔루션 시나리오정렬 기준 액세스-누적합계계산

  • 누적합계계산(RUNNING AGGREGATION)이란?

    • 온라인 설명서에서는 실행집계로 번역

    • 정렬된 행별로 누적 값을 계산

    • 사례

      • 통장잔고

  • 커서 솔루션이 집합 솔루션보다 더 빠름!


커서 기반 솔루션 시나리오정렬 기준 액세스-매핑 문제

  • 세미나 장소 대관 시나리오

  • 목표

    • 최소한의 좌석이 비어 있도록 세미나실을 배정 알고리즘

  • 처리절차

    • 커서 선언(이벤트, 세미나실) – 오름차순

    • 최소인원 이벤트로부터 시작해서 해당 이벤트를 수용할 수 있는 최소공간 세미나실을 찾음

    • 찾으면 테이블변수에 저장하고, 없으면 오류 발생

    • 반복처리 종료되면 결과반환


데모

  • 커서기반 솔루션 시나리오

    • 누적 집계

    • 매핑 문제


세션 요약

  • 적재적소(適材適所)

  • 대부분 커서보다는 집합기반 솔루션이 빠르다!

  • 집합기반 솔루션보다 커서가 빠른 특이한 경우가 존재한다

  • 프로그래머의 성숙도가 관건이다

  • SQL Server 2005의 새로운 기능

    • OVER절

    • APPLY테이블 연산자


참고자료

  • PASS 2006 – AD403 Cursor Based vs. Set Based

  • Inside SQL Server 2005 T-SQL Programming

  • Inside SQL Server 2005 T-SQL Querying

  • http://www.microsoftelearning.com


추천서적: Microsoft PressIT전문가를 위한 고급 정보

최신 기술서적에 대한 정보는 여기서 참조하세요.

www.microsoft.com/learning/books/


참고자료 : SQL Server 활용 리소스- 도움 받을 수 있는 자료는?


SQL Server관련 유용한 웹사이트


SQL Server 3rd Party Tools


SQL Server포켓가이드

<완간>

SQL Server 2005 데이터 통합 가이드

<근간>

SQL Server 2005 고가용성 가이드

SQL Server 2005 튜닝 가이드

SQL Server 2005 트러블슈팅 가이드


SQL Server상업용 서적


SQL Server교육 과정


SQL Server Product Homepage

어디일까요?

http://www.microsoft.com/korea/sql


SQL Server Tech Center

http://www.microsoft.com/korea/technet/prodtechnol/sql


SQL Server개발자센터

http://www.microsoft.com/Korea/MSDN/sql


SQL Server Support Center

http://www.support.microsoft.com/ph/2855


SQL Server Download Center

http://www.microsoft.com/downloads/Browse.aspx?displaylang=ko&productID=261BA873-F3AB-420E-96D6-E3004596A551


SQL Server각종 자료

http://www.microsoft.com/korea/sql/prodinfo/SQL2005_Resources.mspx


Microsoft Partner Portal

http://partner.microsoft.co.kr/pds/Mp_Pds.asp


SQL Server Newsgroup

http://www.microsoft.com/technet/community/newsgroups/server/sql.mspx


SQL Server Community Sites

http://www.microsoft.com/korea/communities/related/windows_server_community.mspx#server


  • Login