Upload
cranbe95
View
1.865
Download
1
Embed Size (px)
DESCRIPTION
활용예시를 통한 Sql server 2012의 향상된 프로그래밍 기능 엿보기
Citation preview
활용예시를 통한 SQL Server 2012 의 향상된 프로그래밍 기능 엿보기
DB팀임현수
개요 향상된 프로그래밍 기능 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% 활용 - 유용한 함수마무리
개요
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
SQL Server 2012 향상된 프로그래밍 기능 Part 1
페이징 (FETCH/OFFSET)
페이징 (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
페이징 (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
페이징 (정리 )
항목 Row_number() OFFSET/FETCH
구문 복잡도 복잡 (11 lines) 단순 (6 lines)
성능 I/O 부하 동일
의견 성능 개선효과는 없으나 , 개발생산성 증대
효율적인 채번 (Sequence)
효율적인 채번 ( 임시 테이블 )
-- 임시테이블 생성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
효율적인 채번 (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
효율적인 채번 (정리 )
항목 임시테이블 SEQUENCE
구문 복잡도 유사
성능(100만건 )
3 분 49초 21 초 (Nocache) or9 초 (Cache)
의견 약 25 배 성능 개선 , 범위 처리 함수 제공
경험치 비교 (Analytic Functions)
경험치 비교
경험치 비교 (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
경험치 비교 (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
경험치 비교 (정리 )
항목 Self join Analytic Func (LAG)
구문 복잡도 유사
성능 42 pages 2 pages
의견 약 21 배 성능 개선 , 활용 빈도는 낮으나 매우 유용함
SQL Server 2012 향상된 프로그래밍 기능 Part 2
집계 쿼리 가속화 (ColumnStore Idx)
집계 쿼리 가속화 (C o lum nS to re Ind e x)
집계 쿼리 가속화 (정리 )
항목 Rowstore Index Columnstore Index
용량 1,500 MB 270 MB
성능(3500만건 )
1 분 19초 0초
의견 집계를 위한 최적의 솔루션임 .Columnstore Index 있는 경우 DML 사용 불가
쿼리분석기 120% 활용 (SSMS)
ZO O M 기능
쿼리창 분리
유용한 함수
유용한 함수카테고리 함수 설명
날짜함수EMONTH() 해당월의 마지막 날짜 반환
FORMAT()날짜 /시간 , 숫자값을 원하는 포맷으로변환
비교함수IIF() CASE 구문과 동일한 기능
CHOOSE() Index 위치의 변수값을 돌려주는 구문
문자열함수CONCAT()
함수내의 문자열을 하나의 문장으로 연결
TRY_CONVERT() 문자열 -> 날짜로 전환이 가능한지 확인
마무리 기본기(모델링 , SQL)
활용능력(SQL Server,
Oracle)
[ 광고 ]넥슨 D B 팀 블로그http ://ne xo nd b te am .tis to ry.c o m