태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

엑기스 | SQL Server) 분할된 테이블에서 효율적으로 통계 관리하기

기술이야기/엑.기.스 2020. 6. 8. 15:55




테이블은 MSSQL에서 가장 최소단위의 데이터 집합 단위입니다.

데이터의 양이 많을수록 테이블을 읽고 쓰고 수정하는 데 필요한 비용이 늘어나는데, 이를 개선하기 위한 기능으로 분할된(Partitioned) 테이블이 존재하고, 이 기능은 관리 효율성과 성능 면에서 다음과 같은 이점이 있습니다. 



1. 데이터 하위 집합을 빠르고 효율적으로 전송하거나 액세스할 수 있을 뿐만 아니라 데이터 컬렉션의 무결성을 유지할 수 있습니다.

2. 하나 이상의 파티션에서 유지 관리 작업을 더 빠르게 수행할 수 있습니다. 

   전체 테이블 대신 이 데이터 하위 집합만 대상으로 하기 때문에 작업이 더 효율적입니다.

3. 자주 실행하는 쿼리 유형과 사용 중인 하드웨어 구성에 따라 쿼리 성능이 향상될 수 있습니다.

4. 전체 테이블이 아니라 파티션 수준에서 잠금 에스컬레이션을 설정하여 성능을 향상시킬 수 있습니다.


그리고 분할된 테이블을 사용하게 되면 통계적 측면에서도 이점이 생깁니다. 증분통계(Incremental)옵션이 그 기능입니다. 


통계는 기본적으로 인덱스를 생성할 때 같은 이름의 통계가 자동 생성됩니다. (인덱스가 없는 column을 조건으로 조회했을 때 생기기도 합니다.) 이렇게 생성된 통계 정보는 Query를 수행했을 때 사용되는 비용을 예측하여, 최적화된 실행 계획을 세울 수 있게 해줍니다. 


하지만 데이터를 수정·변경·삭제할 때 통계 데이터도 업데이트가 되고, 테이블의 모든 데이터를 기반으로 업데이트 하고 있기 때문에 그에 따른 비용이 많이 발생합니다. 비효율적인 예시로, 최근 대량의 데이터가 삽입, 수정, 삭제되는 상황에서는 과거 데이터에 대한 통계에 변화가 없습니다. 


하지만 통계가 업데이트가 될 때에는 테이블의 전체 데이터를 기반으로 샘플링하여 업데이트를 하게 되고, 과거 데이터까지 포함하여 통계 업데이트가 되기 때문에 이 부분에서 비효율이 발생합니다. 증분 통계는 그 비효율을 감소시킬 수 있습니다.


이제 Partition의 효율을 확인하기 위해 일반테이블과 분할된 테이블의 조회에 대한 I/O 비교와 일반 통계와 증분 통계의 통계 업데이트에 쓰이는 I/O 비교를 해보겠습니다.




일반 테이블

1. 효율을 확인하기 위해 테스트용 테이블 TestSalesOrderDetail을 생성하였고, 해당 테이블의 구조입니다.


2. 인덱스는 ModifiedDate 컬럼에 Non Clustered로 생성하였습니다.



3. 전체 테이블의 row 수는 약 378만이고, 단독 Partition으로 구성되어 있습니다.



4. 해당 쿼리를 수행하면 Table Scan을 하게 됩니다. 모든 데이터를 스캔하여 제시된 조건에 맞는 데이터만 결과 집합으로 나타냅니다.

   논리적 읽기를 44,274만큼 합니다.








분할된 테이블


1. 파티션 데이블은 데이터를 특정 컬럼(ModifiedDate)에 기준을 만들어서 분할하는 테이블입니다.


2. TestSalesOrderDetail에서 ModifiedDate 컬럼을 연도별로 기준을 지정했고, 그 기준에 따라 분할되어 저장했습니다.



3. Partition을 각각 확인해보면, 전체 테이블의 row 수는 약 368만이고, 

   1번 partition은 6,718, 2번은 315,247, 3번은 1,875,219, 4번은 1,482,530입니다.



4. 이전과 동일한 쿼리를 수행하면 Table Scan을 하지만, 테이블의 전체 데이터를 스캔하지 않고, 

   제시된 조건이 포함하는 Partition만 스캔하여 결과 집합으로 나타냅니다. 

   논리적 읽기를 4,519로 일반 테이블에 비해 1/10 정도 감소한 것으로 볼 수 있습니다.






5. 일반 테이블과 분할된 테이블의 StmtText를 비교해 보면, 분할된 테이블에서는 

   조회하고자하는 데이터가 속한 Partition을 먼저 탐색한 후에 스캔을 하기 때문에 논리적 읽기 수를 많이 줄일 수 있습니다. 

   위가 일반, 아래가 Partitioned 테이블의 동일한 쿼리에 대한 StmtText입니다.





일반적인 통계


1. 일반적인 테이블이나 분할된 테이블에서 인덱스를 생성하면 모두 통합된 통계로 생성됩니다.

   아래에 보이는 것은 내부적으로 수행되는 Trace인데, 통계를 생성하기 위한 I/O가 쓰이는 것을 볼 수 있고, 

   통계 데이터를 조회해보면 테이블의 전체 데이터를 기반으로 샘플링하는 것을 확인할 수 있습니다.



2. 특정 파티션에 해당하는 데이터만 변경했을 때에도 옵티마이저는 테이블의 전체 데이터를 샘플링하여 통계를 업데이트합니다. 

   (샘플링은 데이터 양에 따라 비율이 조정됩니다.) 테이블이 분할되어 있어도 통계 데이터는 분할되어 있지 않기 때문입니다. 

   통계가 자동 업데이트 될 수 있도록 임계치 이상의 데이터를 업데이트 하였고, 관측한 통계 업데이트에 사용되는 I/O는 1,947입니다.





증분 통계


1. 이런 비효율을 해결할 수 있는 옵션은 Incremental(증분 통계) 업데이트 입니다.



2. 이 옵션은 테이블이 Partitioning 되어있을 경우 ON/OFF 할 수 있는 옵션이며, SQL Server 2014 이상 버전에서 사용이 가능합니다.


3. 옵션을 ON으로 설정하게 되면 기존의 통계를 분할된 통계로 재생성하게 됩니다.



4. 분할된 통계로 구성된 이후에 데이터를 수정하거나 변경이 있어 통계가 업데이트 되는 경우, 모든 데이터의 통계를 업데이트하지 않고 변경된 데이터가 속한 Partiton의 통계만 업데이트하게 됩니다. 통계 업데이트에 쓰이는 I/O는 185로 일반 통계에 비해 1/11 정도 감소한 것을 알 수 있습니다.




분할된 테이블 및 증분 통계 옵션을 통한 기대효과를 아래 표로 정리하며 마무리하겠습니다.


<분할된 테이블 및 증분 통계 옵션을 통한 기대효과>










기고 | 신기술본부 김국현

편집 | 사업기획팀 박예영








엑셈 인사이트 | 脫 오라클, 클라우드 전환과 오픈소스 DBMS 확산






큰 기대와 희망을 갖고 출발한 2020년 경자년 새해도 벌써 두 달이 지나고 있다. 벽두부터 DBMS와 관련되어 각종 IT관련 미디어 지면을 장식하는 키워드가 눈에 띄는데, “脫 오라클”과 “클라우드 전환과 오픈소스 DBMS 대세론”이 바로 그것이다. 


많은 사람들이 脫 오라클 움직임과 클라우드 전환 패러다임에 따른 오픈소스 DBMS 대세론이 기존 오라클 중심의 DBMS 성능 모니터링 S/W 시장에 대한 불확실성을 높여 시장의 지각을 변동시킬 것이라고 말한다. 그런데 DBMS 시장의 변화에 대한 예견과 움직임은 근래 갑자기 유행처럼 불고있는 시장 현상이 아니라, 이미 4~5년 전부터 각종 컨설팅 보고서와 미디어에서 회자 되어 온 전혀 새롭지 않은 이야기다.


이런 이유에서 맥스게이지(MaxGauge)에 대한 우려의 말을 종종 듣는다.


“기업과 은행들이 오라클 DBMS를 버리고 클라우드로 전환하면서 그 자리를 오픈소스 DBMS로 대체한다는데, 

맥스게이지(MaxGauge)의 시장지위가 흔들리게 되는게 아닌가?”


우려와 달리 엑셈의 고민은 시장 내 脫 오라클과 클라우드 패러다임 그리고 오픈소스 DBMS 대세론에 따른 맥스게이지(MaxGauge)의 경쟁력과 시장지위 약화에 있지 않다. 단지 DBMS 시장 현상이 DBMS 성능 모니터링 S/W의 시장규모와 성장성에 어떠한 영향을 줄 것인가에 대해 관심을 기울일 뿐이다. 


보는 이에 따라 DBMS 시장을 바라보는 관점이 다를 수 있지만, 엑셈은 DBMS 시장의 “탈 오라클과 클라우드 전환에 따른 오픈소스 DBMS 확산” 흐름이 맥스게이지(MaxGauge)에게는 리스크보다 기회로 작용할 것이라고 본다. 


첫째, 이러한 DBMS 시장의 움직임에도 불구하고 맥스게이지(MaxGauge) 타깃 시장규모는 증가하고 성장성은 높아질 것이다. 맥스게이지의 주요 고객인 은행 계정계와 전력사 기간계 등 중요 DBMS는 여전히 오라클 DBMS 영역으로 남게 될 가능성이 높아 보이고, 오라클 DBMS 클라우드 전환도 데이터베이스 인프라, 운영 최적화, 전환의 신뢰성을 고려할 경우 그 역시 오라클 클라우드 영역으로 귀결될 가능성이 높아 보인다. 

둘째, 최근 국내 기업의 클라우드의 최종 지향은 ‘하이브리드 클라우드’다. 클라우드 패러다임 시프트는 빅뱅 형태로 시장에서 진행되기 보다 점진적인 케이스 바이 케이스로 진행될 것이다. 이는 기존 온프레미스 DBMS 시장에 더하여 클라우드 패러다임과 클라우드 전환의 움직임은 맥스게이지(MaxGauge)에게 새로운 가능성이 될 것으로 보인다. 

셋째, 脫 오라클과 클라우드 패러다임에 따른 오픈소스 DBMS 확산 역시 맥스게이지(MaxGauge)에게 새로운 시장이 될 가능성이 높아 보인다. 오픈소스 DBMS가 기존 오라클 DBMS 중심의 상용 DBMS 시장을 잠식할 가능성이 없진 않지만, 기업의 시스템은 좀 더 세분화 되고 전문화 되는 방향으로 발전되고 확대되는 경향이 높기 때문이다.  


맥스게이지(MaxGauge)는 태생적으로 DBMS 시장과 궤를 같이 할 수밖에 없는 솔루션이다. DBMS 성능 모니터링 S/W 리더로서 엑셈은, 과거부터 현재까지 DBMS 시장의 흐름과 향후 전개될 DBMS 시장에 대한 분석이 반영된 기술/제품 로드맵 ‘엑셈4.0’을 통해 DBMS 시장 변화에 대한 대응을 준비해 왔다.  


첫째, 시장의 脫 오라클 흐름과 오픈소스 확산 흐름에 맞춰 국내 DBMS 성능 모니터링 S/W 벤더 중 가장 많은 9종의 상용 및 오픈소스 DBMS 성능을 모니터링하는 S/W의 라인업을 다양화 했다. 9종의 DBMS는 오라클 DBMS, 오라클 EXA, SQL Server, DB2, Tibero, MySQL, Altibase, PostgreSQL, Maria DB이고, 이는 시장에서 온프레미스와 클라우드 패러다임을 포함해서 가장 인기있는 DBMS이다. (출처 : DB-Engines.com, 2020) 

둘째, DBMS 클라우드 패러다임에 철저히 대응해왔고 지금도 계속해서 준비하고 있다. 엑셈의 기술은 위 오라클 DBMS를 포함한 9종의 DBMS를 클라우드 환경으로 전환하는 것에 대한 기술적 검증을 이미 마쳤다. 또한 AWS와의 파트너십을 바탕으로 퍼블릭 클라우드향 Aurora DB 모니터링 S/W 개발 경험을 가지고 있다. 더불어 최근 시장에서 클라우드 DBMS로 급격히 인기가 높아진 NoSQL 데이터베이스 중에서 가장 선호되는 MongoDB 성능 모니터링 S/W를 올해 제품 라인업에 추가할 예정이고, 더불어 Redis(인메모리 데이터스토어)에 대한 모니터링 기술도 확보하고 있다.

셋째, 엑셈은 고객 가치를 위하여 InterMax 등 보유 솔루션과 맥스게이지(MaxGauge)와의 기능 연계를 통한 제품의 시너지 창출로 시장에서 경쟁우위를 지속적으로 유지하고자 노력하고 있다. 


누구나 맥스게이지(MaxGauge)를 따라할 수는 있다. 그러나 맥스게이지(MaxGauge)가 품은 시장의 흐름과 고객가치에 대한 깊이를 따라잡을 수는 없을 것이다. 어떠한 국내 DBMS 성능 모니터링 S/W 벤더가 엑셈 만큼 시장의 리더로서 리소스와 경험 그리고 노력을 투사할 수 있을 것인가? 단언컨대 국내에는 없다. 퍼스트 무버(First Mover)와 팔로워(Follower)의 차이는 생각보다 커서 여간해서는 뒤집어지지 않는다.


이것이 바로 No.1 맥스게이지(MaxGauge)가 脫 오라클 움직임과 클라우드 전환 패러다임에 따른 오픈소스 DBMS 대세론에도 흔들리지 않는 이유다.

  

엑셈은 멈추지 않고 개발, 마케팅, 세일즈 레벨에서 시장 전략을 유연하게 변화시키며 전사적인 수준에서 ‘脫 오라클과 클라우드 패러다임에 따른 오픈소스 DBMS 대세론’을 치밀하게 대응해 갈 것이다. 앞으로도 계속 고객이 주저없이 선택하는 맥스게이지(MaxGauge)를 지켜보도록 하자.








기획 및 글 | 사업기획팀