태터데스크 관리자

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

태터데스크 메시지

저장하였습니다.

엑기스 | 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 정도 감소한 것을 알 수 있습니다.




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


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










기고 | 신기술본부 김국현

편집 | 사업기획팀 박예영








아이참 | Microsoft IoT in Action Seoul 2019

기술이야기/아이참 2019. 1. 4. 10:41


2019년을 맞아 셈통에 새로운 코너가 등장하였습니다! 바로바로 아이인데요,

아이참은 아이티(IT) 컨퍼런스/세미나 참관기의 줄임말로, 수많은 IT 전시회를 엑셈이 직접! 여러분 대신 다녀와서 내용을 공유해드리고자 합니다조금은 억지스럽지만, 셈통 구독자 여러분에게 더욱 양질의 컨텐츠를 전달하기위해 노력하는 엑셈이랍니다.^^


오늘은 아이참 첫번째 시간으로, 지난 1월 17일에 진행되었던 Microsoft IoT in Action Seoul 2019에 다녀온 후기를 전해드립니다.

 

Microsoft에서 주관하는 IoT in Action 이벤트는 2017년 10월 독일을 시작으로 전 세계 도시에서 연달아 개최되었는데요, 작년에 이어 올해도 여러 국가에서 연속해서 컨퍼런스를 개최하고 있습니다. 지난 1월 14일 뉴욕을 시작으로, 저희가 참관한 서울(1/17), 도쿄(1/22), 올랜도(2/11), 뉘른베르크(2/25), 시드니(3/9) 등지에서 개최될 예정이라고 합니다. 서울에서는 벌써 2번째 진행되었네요.


 

 여기서 잠깐! IoT와 엑셈, 도대체 무슨 관계냐구요?

엑셈은 다양한 분야의 기술 축적과 관련 사업들을 하고 있습니다. 공장을 지능화하는 스마트팩토리 기술 개발과 관련 사업을 하고 있는데요, 공장에서 빅데이터를 모을 수 있는 IoT는 이 모든 과정의 출발입니다. 그래서 엑셈은 이번 행사에서 IoT에 대한 인사이트를 얻고자 하였습니다.

 

IoT in Action 이벤트는 IoT 솔루션을 구축하고 도입하는 과정에서 Microsoft의 고객 및 파트너의 에코시스템을 직접 만나보고, 원한다면 협업을 추진할 수 있는 기회였습니다. 또한 Microsoft의 제품이나 기술 소개 내용과 더불어 왜 IoT가 필요한지, 도입을 위해 고려해야 하는 것들이 무엇인지, IoT를 도입함으로써 비즈니스 변화를 어떻게 바꿀 수 있는지 등을 다양한 사례를 통해 확인하는 행사였습니다. 

 

 

행사장에 일찍 도착하여 등록도 하고, 선착순으로 제공되는 도시락 교환권도 겟! 하고나서 Microsoft의 파트너사 부스를 방문하였습니다. 이번 행사에는 국내외 14개 업체가 참여하였는데요, 그 중 눈에 띄었던, 그리고 세션발표에 참여하였던 업체들을 간단히 살펴보겠습니다.

 

1. BRFrame

비알프레임은 IoT+Edge+AI가 결합된 디바이스와 AI서비스를 제공하는 업체로, 의사결정을 돕는 진단 서비스를 지원하고 있습니다. 인공지능을 통해 장치 관리 및 모니터링을 하고 기계 고장을 예측하여 유지보수를 하는 등의 서비스를 제공한다고 합니다.

 

2. Innodep

이노뎁은 본래 CCTV를 제작하고 유지보수를 제공하는 업체였는데, MS Azure와 손잡으며 빅데이터, 클라우드 등 최신 기술을 도입하여 사업을 확장하였다고 합니다. 클라우드&IoT 기반 영상 관제 플랫폼을 소개하였는데, 현장 반응이 좋았습니다.

 

3. Thingscare

띵스케어는 IoT 장치를 통해 원격 모니터링, 예방 유지보수 서비스를 제공하여 최종적으로는 Connected Factory를 지향한다고 합니다. 빅데이터 분석을 통하여 IoT/디지털 신호의 고가용성을 추구한다고 하네요.

 

4. UlalaLab

재미있는 기업명으로 행사장에 웃음꽃을 피웠던 회사입니다. 클라우드/머신러닝/빅데이터 기반 스마트팩토리 IoT 플랫폼을 제공하고 있는데요, “WICON”이라는 IoT 디바이스와 “WimX”이라는 스마트팩토리 통합관리 솔루션을 제공하고 있습니다.

 

부스를 한바퀴 둘러보니, 어느새 세션발표 시작이 다가왔더군요. 키워드로 세션 발표 내용을 전해드리겠습니다 :)

 IoT 시대에서 Microsoft가 나아가고자 하는 길 - Learn, Grow, Connect 

환영사에서 IoT의 Security 및 Ecosystem이 문제시 되고 있고, 이런 문제들은 파트너사들이 Microsoft를 통해 쉽게 해결할 수 있다고 합니다. IoT를 적용하고 활용하기 위한 키워드로 Learn, Grow, Connect를 제시했는데요, 이 키워드는 인공지능 시대에 적합한 키워드라고 생각되었습니다. 단순히 IoT에만 적용되는 것이 아니라, 딥러닝 같은 새로운 학습(Learn), 학습을 위한 지속적인 기술적 성장(Grow), 기술의 연결(Connect)을 통한 사업의 성장으로도 볼 수 있을 듯 합니다.

 

 IoT is everywhere! & Business와 Value Chain 

IoT와 수반되는 기술들이 우리 일상생활에 얼마나 큰 변화를 줄 수 있는지 사례를 통해 이야기했고, "고객이 구매하는 순간부터 비즈니스는 시작된다"로 인식이 변하고 있다고 합니다. 제품과 서비스가 고객의 손에 들어가면서부터 데이터가 생성되기 시작하며, 이 데이터를 활용하는 것이 바로 기술이라고요. 그래서 IoT Value Chain을 알아보고 이에 대하여 투자하는 것이 중요하다고 강조하며, Microsoft는 향후 4년동안 IoT에 50억 달러를 투자할 것이라고 말했습니다.

 

 IoT의 진화, 그 마지막은 Digital Twins 

IoT도 오랜 시간 진화를 거쳐왔습니다. 초반의 IoT는 빠른 연결과 확장, 적용이 중요시 되었다면, 지금은 AI를 통한 비즈니스 접근이 더 중요해지고, 보안의 중요성도 부각되었습니다. 진화의 마지막 단계로 Microsoft는 Digital Twins를 제시했습니다. 디지털 트윈이란 물리적 환경과 디지털 환경을 융합시켜 면밀하게 활용하는 것인데요, 여기서 가장 중요한 것은 전체 그림을 보고 사물과 인간, 디바이스의 관계를 설정하는 것이라고 말했습니다.

 

 Digital Transformation, 우리는 어디쯤 왔을까? 

이번 컨퍼런스의 한 발표자께서 이런 말을 하셨습니다. 

"오늘 4차 산업혁명이라는 단어를 한번도 듣지 못했습니다. 아마도 오늘 가장 강조되고 있는 단어는 디지털 트랜스포메이션인 것 같습니다."

모바일, 클라우드, IoT, AI 등 지난 10여 년간 기술의 발전으로 Digital Transformation이 등장해 우리의 생활을 빠르게 변화시키고 있죠. 이 거대한 물결 속에서 우리는 과연 어디쯤 왔을까요? Microsoft의 입장에서 디지털 트랜스포메이션의 4단계를 제시하였습니다(상기 사진 참고). 이 4단계 중 우리가 현재 어느 단계에 있을 지 고민하고, 각 단계별 다른 접근을 해야 한다고 합니다.

 

 Business Model 정의하기 

만약 우리가 만든 솔루션과 PoC 파일럿을 만들었는데, 아무도 관심이 없고 사용하지 않는다면? 이런 일들이 사실 비일비재 합니다. 그렇다면 도대체 왜 이런 일들이 발생하는 것일까요? Microsoft에서는 이를 비즈니스 모델링에 대한 정의가 부족했기 때문이라고 지적했습니다. 그리고 비즈니스 모델링 정의를 위한 워크샵 단계를 제시하였죠.

Microsoft는 이 모든 과정(상단 좌측 사진 참고)에서 의사결정 권한이 있는 이해 당사자, 즉 임원들의 적극적인 참여를 권장했습니다. 그리고 비즈니스 모델 워크샵에서 비즈니스 모델 캔버스(상단 우측 사진 참고)를 사용하여 비즈니스 가치를 어디에 둘 것인지 명확히 정리하라고 말했습니다.

 

 PoV(Proof of Value), 이제는 가치에 집중할 때 

IoT 및 기타 기술들에 대한 컨셉은 이미 증명 되었으니, PoC보다 PoV에 집중하라고 말했습니다. 우리가 가지고 있는 가치를 증명해야 하는 것입니다. 가치 증명을 위해 체크해야 할 지침도 제시하였는데요, 바로 BANT(Budget, Authority, Need, Timing)입니다. 비즈니스 리소스가 있는지, 적절한 사람에게 보고하고 있는지, 정말 니즈가 있는지, 타이밍은 어떠한지를 고려하면서 가치를 증명해야 한다고 합니다.

 

IoT는 빅데이터, AI와 연계되어 향후 4차산업의 핵심으로 부상하고 있습니다. 이번 행사를 통해 IoT와 수반되는 기술들이 산업 전반에 미칠 변화에 대해 알아볼 수 있었고, Microsoft의 IoT 솔루션과 파트너 프로그램에 대하여서도 알아볼 수 있었습니다. 컨퍼런스에 참가하신 분들도 매우 많았고, 알찬 세션들로 구성되어 저희 엑셈에서도 많이 배울 수 있었네요 :)

다음 2월 아이참에서는 엑셈하면 빼놓을 수 없는 오라클! 바로 1월 29일(화)에 진행된 ORACLE CLOUDWORLD Seoul 참관기를 보내드릴 예정이니, 많은 기대 부탁드립니다!

혹시 엑셈이 대신 다녀와주었으면 좋겠다 싶은 행사가 있다면 댓글로 남겨주세요.^^ 참고하도록 하겠습니다.





엑셈 블로그 콘텐츠에 대하여 더 알고싶으신가요? 여기를 눌러 문의해보세요!




기획 및 글 | 사업기획팀 박예영, 박정은

현장 사진 | 사업기획팀 박예영