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

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


  • 103 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


Db

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

성대중

필라넷 / DB사업부

책임컨설턴트


Db

강사 소개

성대중 Email: [email protected]: 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(정보문화사)


Db

PASS 소개

  • Professional Association for SQL Server

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

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

    • 미국, 유럽, 일본 등

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

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


Pass 2006 seattle

PASS 2006 - Seattle


Db

목표

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

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

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

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

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

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


Db

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

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

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

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

Level 200


Db

목차

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

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

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


Db

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

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

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

  • 집합기반 솔루션의 장점

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

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

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

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

  • 커서기반 솔루션의 장점

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

    • 정렬 기준 액세스가 가능


Db

데모

커서의 작업부하


Db

목차

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

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

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


Db

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

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

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

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

  • 대부분 더 빠른 성능

  • 절대는 없다!


Db

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

  • 요구사항:

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

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

    • 활동중지상태의 정의

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

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

  • 전제조건

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


Db

집합기반 솔루션 시나리오커서기반 솔루션(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;


Db

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

  • 경과시간 : 1 초

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

솔루션 쿼리

SELECT shipperid

FROM dbo.Orders

GROUP BY shipperid

HAVING MAX(orderdate) < '20010101';

실행계획

성능측정결과


Db

집합기반 솔루션 시나리오집합기반 솔루션#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';

실행계획

성능측정결과


Db

집합기반 솔루션 시나리오집합기반 솔루션#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


Db

집합기반 솔루션 시나리오집합기반 솔루션#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


Db

집합기반 솔루션 시나리오집합기반 솔루션#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


Db

데모

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

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

      (커서 제거 튜닝사례)


Db

목차

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

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

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


Db

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

  • 제한된 용도로 사용

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

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

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

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

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

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


Db

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

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

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

  • 대안

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

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

      예제)

SELECT F.*

FROM dbo.T1

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


Db

데모

  • 행 단위 처리

    • 커서와 WHILE LOOP비교

    • APPLY테이블 연산자


Db

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

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

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

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

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

    • 누적 집계

    • 매핑 문제

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


Db

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

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

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

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

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


Db

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

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

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

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

    • 사례

      • 통장잔고

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


Db

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

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

  • 목표

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

  • 처리절차

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

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

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

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


Db

데모

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

    • 누적 집계

    • 매핑 문제


Db

세션 요약

  • 적재적소(適材適所)

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

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

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

  • SQL Server 2005의 새로운 기능

    • OVER절

    • APPLY테이블 연산자


Db

참고자료

  • 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 press it

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

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

www.microsoft.com/learning/books/


Sql server

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


Sql server1

SQL Server관련 유용한 웹사이트


Sql server 3 rd party tools

SQL Server 3rd Party Tools


Sql server2

SQL Server포켓가이드

<완간>

SQL Server 2005 데이터 통합 가이드

<근간>

SQL Server 2005 고가용성 가이드

SQL Server 2005 튜닝 가이드

SQL Server 2005 트러블슈팅 가이드


Sql server3

SQL Server상업용 서적


Sql server4

SQL Server교육 과정


Sql server product homepage

SQL Server Product Homepage

어디일까요?

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


Sql server tech center

SQL Server Tech Center

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


Sql server5

SQL Server개발자센터

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


Sql server support center

SQL Server Support Center

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


Sql server download center

SQL Server Download Center

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


Sql server6

SQL Server각종 자료

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


Microsoft partner portal

Microsoft Partner Portal

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


Sql server newsgroup

SQL Server Newsgroup

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


Sql server community sites

SQL Server Community Sites

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


  • Login