생계/튜닝2019. 11. 1. 14:08

튜닝사례까지는 아니지만.. 

db segment 증가량은 어느 사이트나 관심의 대상이다. 


만약 매월 segment 사용량 데이터를 수집하고 있다면 이 raw data 로

전월대비 리포트를 뽑을수 있다. 


예를 들어

시점, owner, segment 를 매월 수집했다면..

2019년 10월 사용량과 9월 대비 증가량을 뽑고자 한다면..




select 수집일, owner, round(sum(bytes)) seg 

 from 수집한데이터테이블

where 수집일 in ('201909','201910')

group by 수집일, owner


수집일, owner 별 사용량 합이 구해진다. 

owner 가 OWN1, OWN2 이 있다고 하자.


select sum(decode(rn,1,seg)) total

        ,sum(rn * seg) tot_dif

        ,sum(decode(rn,1,decode(owner,'OWN1',seg))) tot_own1

        ,sum(decode(owner,'OWN1',rn * seg) ) tot_own1_dif

        ,sum(decode(rn,1,decode(owner,'OWN2',seg))) tot_own2

        ,sum(decode(owner,'OWN2',rn * seg) ) tot_own2_dif

  from (

select 수집일, owner, round(sum(bytes)) seg, decode(수집일,'201910',1,'201909',-1) rn

       from 수집한데이터테이블

where 수집일 in ('201909','201910')

group by 수집일, owner

        )


rn 이라는 가공의 컬럼을 만들어서 현재월이면 1, 지난 월이면 -1 이 나오게 해서

sum 실행시 전월이면 마이너스가 된다. 


반응형
Posted by 돌고래트레이너