활용예시를 통한 sql server 2012의 향상된 프로그래밍 기능 엿보기

29
활용예시를 통한 SQL Server 2012 향상된 프로그래밍 기능 엿보기 DB 임현수

Upload: cranbe95

Post on 03-Jul-2015

1.863 views

Category:

Technology


1 download

DESCRIPTION

활용예시를 통한 Sql server 2012의 향상된 프로그래밍 기능 엿보기

TRANSCRIPT

Page 1: 활용예시를 통한 Sql server 2012의 향상된 프로그래밍 기능 엿보기

활용예시를 통한 SQL Server 2012 의 향상된 프로그래밍 기능 엿보기

DB팀임현수

Page 2: 활용예시를 통한 Sql server 2012의 향상된 프로그래밍 기능 엿보기

개요 향상된 프로그래밍 기능 Part 1

- 페이징 (O FFS ET/FETC H )

- 효율적인 채번 (S EQ U ENC E)

- 경험치 비교 (Analytic Func tio ns )

향상된 프로그래밍 기능 Part 2 - 집계처리 가속화 (C o lum nS to re Ind e x)

- 쿼리분석기 1 20% 활용 - 유용한 함수마무리

Page 3: 활용예시를 통한 Sql server 2012의 향상된 프로그래밍 기능 엿보기

개요

Page 4: 활용예시를 통한 Sql server 2012의 향상된 프로그래밍 기능 엿보기

S Q L S e rve r 2005 2008 R2~ 향상된 프로그래밍 기능

- RANK () O VER

- RO W_NU MBER () O VER

- C TE

- MERGE

- F ilte re d In d e x

Page 5: 활용예시를 통한 Sql server 2012의 향상된 프로그래밍 기능 엿보기

SQL Server 2012 향상된 프로그래밍 기능 Part 1

Page 6: 활용예시를 통한 Sql server 2012의 향상된 프로그래밍 기능 엿보기

페이징 (FETCH/OFFSET)

Page 7: 활용예시를 통한 Sql server 2012의 향상된 프로그래밍 기능 엿보기

페이징 (ro w_num b e r())

select x.*from (

select top ( @PageNo * @PageSize)

, row_number() over (order by col01 ) seqNo, col01, col02from dbo.tab01 with (readuncommitted)where col01 > @startArticleNoorder by col01 ) x

where x.seqNo between (@PageNo-1) * @PageSize and @PageNo * @PageSize -1order by x.col01;

B efore

Page 8: 활용예시를 통한 Sql server 2012의 향상된 프로그래밍 기능 엿보기

페이징 (O FFS ET/FETC H )

select * from dbo.tab01 wtih (nolock) where col01 >= @startArticleNoorder by col01 offset (@PageNo-1)*@PageSize rowsfetch next @PageSize rows only;

After

Page 9: 활용예시를 통한 Sql server 2012의 향상된 프로그래밍 기능 엿보기

페이징 (정리 )

항목 Row_number() OFFSET/FETCH

구문 복잡도 복잡 (11 lines) 단순 (6 lines)

성능 I/O 부하 동일

의견 성능 개선효과는 없으나 , 개발생산성 증대

Page 10: 활용예시를 통한 Sql server 2012의 향상된 프로그래밍 기능 엿보기

효율적인 채번 (Sequence)

Page 11: 활용예시를 통한 Sql server 2012의 향상된 프로그래밍 기능 엿보기

효율적인 채번 ( 임시 테이블 )

-- 임시테이블 생성create table SeqNo_tab (SeqNo int);Insert into SeqNo_tab values (1);

-- 채번 성능 테스트declare @seqval int = 0, @cnt int = 0; while (@cnt <= 1000000)begin update SeqNo_tab set @seqval= SeqNo = SeqNo + 1; set @Cnt = @Cnt + 1;end

B efore

Page 12: 활용예시를 통한 Sql server 2012의 향상된 프로그래밍 기능 엿보기

효율적인 채번 (S e q ue nc e )

-- 시퀀스 생성Create sequence SeqNo_cache10Start with 1Increment by 1 Cache 10;go -- 채번 성능 테스트declare @seqval int = 0, @Cnt int = 0;

while (@Cnt <= 1000000)begin

SELECT @seqval = next value for SeqNo_cache10;set @Cnt = @Cnt + 1;

end

After

Page 13: 활용예시를 통한 Sql server 2012의 향상된 프로그래밍 기능 엿보기

효율적인 채번 (정리 )

항목 임시테이블 SEQUENCE

구문 복잡도 유사

성능(100만건 )

3 분 49초 21 초 (Nocache) or9 초 (Cache)

의견 약 25 배 성능 개선 , 범위 처리 함수 제공

Page 14: 활용예시를 통한 Sql server 2012의 향상된 프로그래밍 기능 엿보기

경험치 비교 (Analytic Functions)

Page 15: 활용예시를 통한 Sql server 2012의 향상된 프로그래밍 기능 엿보기

경험치 비교

Page 16: 활용예시를 통한 Sql server 2012의 향상된 프로그래밍 기능 엿보기

경험치 비교 (s e lf jo in )

select a.seqNo, a.CompareValue, b.CompareValuefrom tab_01 a with (readuncommitted)left outer join tab_01 b with (readuncommitted) on a.seqNo -1 = b.seqNoorder by a.seqNo

42 pages

B efore

Page 17: 활용예시를 통한 Sql server 2012의 향상된 프로그래밍 기능 엿보기

경험치 비교 (Analytic Func tio n : LAG)

selectseqNo

, compareValue , lag(compareValue, 1, 0) over (order by seqNo) as LagValuefrom tab_01 with (readuncommitted) order by seqNo

2 pages

After

Page 18: 활용예시를 통한 Sql server 2012의 향상된 프로그래밍 기능 엿보기

경험치 비교 (정리 )

항목 Self join Analytic Func (LAG)

구문 복잡도 유사

성능 42 pages 2 pages

의견 약 21 배 성능 개선 , 활용 빈도는 낮으나 매우 유용함

Page 19: 활용예시를 통한 Sql server 2012의 향상된 프로그래밍 기능 엿보기

SQL Server 2012 향상된 프로그래밍 기능 Part 2

Page 20: 활용예시를 통한 Sql server 2012의 향상된 프로그래밍 기능 엿보기

집계 쿼리 가속화 (ColumnStore Idx)

Page 21: 활용예시를 통한 Sql server 2012의 향상된 프로그래밍 기능 엿보기

집계 쿼리 가속화 (C o lum nS to re Ind e x)

Page 22: 활용예시를 통한 Sql server 2012의 향상된 프로그래밍 기능 엿보기

집계 쿼리 가속화 (정리 )

항목 Rowstore Index Columnstore Index

용량 1,500 MB 270 MB

성능(3500만건 )

1 분 19초 0초

의견 집계를 위한 최적의 솔루션임 .Columnstore Index 있는 경우 DML 사용 불가

Page 23: 활용예시를 통한 Sql server 2012의 향상된 프로그래밍 기능 엿보기

쿼리분석기 120% 활용 (SSMS)

Page 24: 활용예시를 통한 Sql server 2012의 향상된 프로그래밍 기능 엿보기

ZO O M 기능

Page 25: 활용예시를 통한 Sql server 2012의 향상된 프로그래밍 기능 엿보기

쿼리창 분리

Page 26: 활용예시를 통한 Sql server 2012의 향상된 프로그래밍 기능 엿보기

유용한 함수

Page 27: 활용예시를 통한 Sql server 2012의 향상된 프로그래밍 기능 엿보기

유용한 함수카테고리 함수 설명

날짜함수EMONTH() 해당월의 마지막 날짜 반환

FORMAT()날짜 /시간 , 숫자값을 원하는 포맷으로변환

비교함수IIF() CASE 구문과 동일한 기능

CHOOSE() Index 위치의 변수값을 돌려주는 구문

문자열함수CONCAT()

함수내의 문자열을 하나의 문장으로 연결

TRY_CONVERT() 문자열 -> 날짜로 전환이 가능한지 확인

Page 28: 활용예시를 통한 Sql server 2012의 향상된 프로그래밍 기능 엿보기

마무리 기본기(모델링 , SQL)

활용능력(SQL Server,

Oracle)

Page 29: 활용예시를 통한 Sql server 2012의 향상된 프로그래밍 기능 엿보기

[ 광고 ]넥슨 D B 팀 블로그http ://ne xo nd b te am .tis to ry.c o m