slide1
Download
Skip this Video
Download Presentation
성대중 필라넷 / DB 사업부 책임컨설턴트

Loading in 2 Seconds...

play fullscreen
1 / 48

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


  • 139 Views
  • Uploaded on

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

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' 성대중 필라넷 / DB 사업부 책임컨설턴트' - wyoming-potts


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
slide2

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

성대중

필라넷 / DB사업부

책임컨설턴트

slide3
강사 소개

성대중 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(정보문화사)

slide4
PASS 소개
  • Professional Association for SQL Server
  • 전세계 SQL Server전문가 커뮤니티
  • 매년 정기적으로 PASS Submit행사 진행
    • 미국, 유럽, 일본 등
  • SQL Server관련 정보 교환/멤버십 서비스
  • www.sqlpass.org웹사이트 참조
slide6
목표
  • 커서 기반 솔루션과 집합 기반 솔루션의 선택기준을 제시
    • 커서 기반 솔루션과 집합 기반 솔루션 비교
    • 집합 기반 솔루션 시나리오
    • 커서 기반 솔루션 시나리오
    • 커서를 대체하기 위한 SQL Server 2005 새로운 기능
  • 관건은 프로그래머의 성숙도
slide7
이 주제를 이해하는 데 필요한 지식
  • 커서기반(Cursor-Based)쿼리에 대한 기본 지식
  • 집합기반(Set-Based)쿼리에 대한 기본지식
  • SQL Server 2005의 새로운 T-SQL 구문

Level 200

slide8
목차
  • 커서 기반 솔루션과 집합기반 솔루션 비교
  • 집합 기반 솔루션 시나리오
  • 커서 기반 솔루션 시나리오
slide9

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

  • 커서 기반 솔루션은 절차적/반복적 로직 사용
  • 집합 기반 솔루션은 다수의 대안 중에서 최적의 접근방법을 적용(집합적 로직)
  • 집합기반 솔루션의 장점
    • 행 단위 처리의 작업부하 제거
    • 쿼리 최적화 프로그램에서 최적의 실행계획을 선택가능
    • “어떻게”가 아니라 “무엇을”에 집중
    • 더 적은 코드, 유지보수 용이
  • 커서기반 솔루션의 장점
    • 각 행별로 처리해야 하는 시나리오에 적합
    • 정렬 기준 액세스가 가능
slide10

데모

커서의 작업부하

slide11
목차
  • 커서 기반 솔루션과 집합기반 솔루션 비교
  • 집합 기반 솔루션 시나리오
  • 커서 기반 솔루션 시나리오
slide12

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

  • 관계형 데이터베이스의 기본 전제
  • 대부분의 비즈니스 요구사항은 집합 기반 솔루션으로 해결가능
  • 더 적은 코드, 더 적은 유지보수 노력
  • 대부분 더 빠른 성능
  • 절대는 없다!
slide13

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

  • 요구사항:
    • Shippers테이블과 Orders테이블 사용
    • 2001 년 1월 1일 이후 활동중지상태의 거래처 찾기
    • 활동중지상태의 정의
      • 2001 년 1월 1일 이후 주문 건이 없는 거래처
    • 주문 건이 없는 신규 거래처는 무시
  • 전제조건
    • 최적화된 인덱스 존재: Orders(shipperid, orderdate)
slide14

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

slide15

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

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

솔루션 쿼리

SELECT shipperid

FROM dbo.Orders

GROUP BY shipperid

HAVING MAX(orderdate) < \'20010101\';

실행계획

성능측정결과

slide16

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

실행계획

성능측정결과

slide17

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

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

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

데모

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

(커서 제거 튜닝사례)

slide21
목차
  • 커서 기반 솔루션과 집합기반 솔루션 비교
  • 집합 기반 솔루션 시나리오
  • 커서 기반 솔루션 시나리오
slide22

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

  • 제한된 용도로 사용
  • 행 단위 처리가 필요한 경우
    • 테이블의 행별로 저장 프로시저를 호출해야 하는 경우
    • 테이블의 행별로 결과집합을 반환해야 하는 경우
  • 정렬기준 액세스가 필요한 경우
  • 대부분은 집합기반 솔루션으로 전환가능
  • 커서기반솔루션이 더 빠른 특이한 경우 존재
slide23

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

  • 정말 행 단위 처리가 필요한가?
    • 집합기반 솔루션으로 전환가능한지 확인
  • 대안
    • 커서보다 기준으로 한 루프구조가 더 빠르다!
    • SQL Server 2005의APPLY테이블 연산자

예제)

SELECT F.*

FROM dbo.T1

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

slide24

데모

  • 행 단위 처리
    • 커서와 WHILE LOOP비교
    • APPLY테이블 연산자
slide25

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

  • 커서를 사용하면 정렬된 순서로 액세스 가능
    • 집합기반 솔루션에서는 명시적으로 ORDER BY절을 지정하지 않는 한 정렬 순서를 보장하지 않음
    • 커서의 작업부하보다 집합기반 솔루션에서 데이터를 처리하기 위해 스캔 해야 하는 작업부하가 더 큰 경우에는 커서 기반 솔루션이 더 빠르다
  • 정렬 기준 액세스가 필요한 사례
    • 누적 집계
    • 매핑 문제
  • 정렬기준 액세스를 지원하기 위한 새로운 기능
slide26

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

  • ANSI에서도 정렬기준액세스 지원 기능 필요 인정
  • OVER절은 순위, 집계함수에서 정렬기준 액세스를 지원하기 위한 ANSI 표준
  • SQL Server 2005에서는 순위함수에서만 OVER절을 지원
  • SQL Server 2005에서는 APPLY테이블 연산자 지원 (T-SQL확장기능)
slide27

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

  • 누적합계계산(RUNNING AGGREGATION)이란?
    • 온라인 설명서에서는 실행집계로 번역
    • 정렬된 행별로 누적 값을 계산
    • 사례
      • 통장잔고
  • 커서 솔루션이 집합 솔루션보다 더 빠름!
slide28

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

  • 세미나 장소 대관 시나리오
  • 목표
    • 최소한의 좌석이 비어 있도록 세미나실을 배정 알고리즘
  • 처리절차
    • 커서 선언(이벤트, 세미나실) – 오름차순
    • 최소인원 이벤트로부터 시작해서 해당 이벤트를 수용할 수 있는 최소공간 세미나실을 찾음
    • 찾으면 테이블변수에 저장하고, 없으면 오류 발생
    • 반복처리 종료되면 결과반환
slide29

데모

  • 커서기반 솔루션 시나리오
    • 누적 집계
    • 매핑 문제
slide30
세션 요약
  • 적재적소(適材適所)
  • 대부분 커서보다는 집합기반 솔루션이 빠르다!
  • 집합기반 솔루션보다 커서가 빠른 특이한 경우가 존재한다
  • 프로그래머의 성숙도가 관건이다
  • SQL Server 2005의 새로운 기능
    • OVER절
    • APPLY테이블 연산자
slide31
참고자료
  • 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 server2
SQL Server포켓가이드

<완간>

SQL Server 2005 데이터 통합 가이드

<근간>

SQL Server 2005 고가용성 가이드

SQL Server 2005 튜닝 가이드

SQL Server 2005 트러블슈팅 가이드

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

ad