KR20210112045A - Dbms구간에서의 애플리케이션 sql 성능분석 시스템 및 방법 - Google Patents

Dbms구간에서의 애플리케이션 sql 성능분석 시스템 및 방법 Download PDF

Info

Publication number
KR20210112045A
KR20210112045A KR1020200027120A KR20200027120A KR20210112045A KR 20210112045 A KR20210112045 A KR 20210112045A KR 1020200027120 A KR1020200027120 A KR 1020200027120A KR 20200027120 A KR20200027120 A KR 20200027120A KR 20210112045 A KR20210112045 A KR 20210112045A
Authority
KR
South Korea
Prior art keywords
sql
transaction
performance
application
performance analysis
Prior art date
Application number
KR1020200027120A
Other languages
English (en)
Inventor
정현진
Original Assignee
두썸소프트 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 두썸소프트 주식회사 filed Critical 두썸소프트 주식회사
Priority to KR1020200027120A priority Critical patent/KR20210112045A/ko
Publication of KR20210112045A publication Critical patent/KR20210112045A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/217Database tuning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

본 발명은 트랜잭션 기반의 SQL 성능분석정보를 제공하는 성능분석 시스템에 관한 것으로서, 본 발명의 성능분석 시스템은, 애플리케이션의 SQL 처리를 위한 데이터베이스, 애플리케이션 서버에서의 상기 데이터베이스와 연동한 트랜잭션의 발생에 따른 트리거에 의해 API(Application Programming Interface)를 기동하고, 각 트랜잭션의 시작 시점 및 종료 시점 사이의 각 SQL 단위의 성능데이터를 상기 데이터베이스로부터 수집하여 레포지토리에 저장하는 수집 및 저장부, 및 상기 레포지토리에 저장된 상기 성능데이터를 분석하여 상기 각 트랜잭션 또는 상기 각 SQL 단위에 대한 성능분석정보를 제공하는 분석정보 제공부를 포함한다.

Description

DBMS구간에서의 애플리케이션 SQL 성능분석 시스템 및 방법{APPLICATION SQL PERFORMANCE ANALYSIS SYSTEM AND METHOD IN DBMS SECTION USING THE SAME}
본 발명은 애플리케이션 SQL 성능분석 시스템 및 방법에 관한 것으로서, 특히, DBMS에서 수행되는 SQL(Structured Query Language)의 성능데이터를 각 트랜잭션 식별정보와 함께 수집하여 활용함으로써 애플리케이션 성능을 보다 효율적으로 분석 할 수 있는 방법 및 시스템에 관한 것이다.
애플리케이션 서버에서 수행되는 응용 프로그램은 데이터 처리가 필요한 경우 원하는 데이터베이스 서버에 접속하여 SQL을 전달하고, 데이터베이스는 이 SQL을 수행하여 그 처리 결과를 애플리케이션 서버로 되돌려 준다. 이 때 수행되는 SQL의 성능데이터는 데이터베이스에서 제공하는 기능을 이용하여 수집이 가능하다.
그러나 데이터베이스 서버에서 수집되는 성능데이터는 애플리케이션 처리 단위인 트랜잭션 식별정보가 포함되어 있지 않고 SQL 단위로만 구성되어 있기 때문에, 데이터베이스에서 문제의 SQL을 발견하더라도 그 원인이 되는 애플리케이션을 즉시 확인 할 수 없고, 원인 분석 및 문제 해결에 많은 시간과 비용이 소요되어 성능분석 효율성이 저하되는 문제가 있다.
또한 데이터베이스 서버에서 수집되는 성능데이터는 대부분 SQL 수행 상태를 사진 찍듯이 수집하는 스냅샷방식을 사용하므로 성능데이터의 손실이 필연적으로 발생하며, 왜곡된 성능데이터에 의한 분석오류 가능성이 존재하는 문제점이 있다.
이와 같이, 기업 등의 정보 시스템에서 애플리케이션이 실행될 때 발생하는 대용량/비정형의 기존 DB 성능데이터는 애플리케이션 구별이 어렵고 필연적인 데이터 손실(Loss)을 동반하는 등 구조적 문제를 포함하며, 데이터베이스 구간의 명확한 애플리케이션 성능분석을 저해하는 원인이다. 본 발명에서는 애플리케이션의 트랜잭션 식별이 가능하고 데이터 손실이 없도록 개선함으로써, 기존의 DBMS(DataBase Management System)에서 애플리케이션 성능을 정확하게 측정할 수 없는 구조적 문제를 해결하기 위한 DB 성능분석 솔루션을 제공한다.
즉, 본 발명은 명확하게 식별이 가능한 트랜잭션 정보를 기반으로 데이터베이스 구간에서의 애플리케이션 성능분석 시스템에 관한 것으로서, 애플리케이션이 실행될 때 어플리케이션 서버에서 트랜잭션 식별정보를 검출하여 DB 서버에 전송하는 API(Application Programming Interface)를 포함하는데, 현재 보편적으로 사용되는 애플리케이션 환경(J2EE, TP-Monitor 등)에 최적화된 모듈로 구현될 수 있다. 또한, 본 발명의 분석 시스템은, 개별 트랜잭션과 내부 SQL 실행성능데이터를 빠짐없이 모두 수집하고, 수집된 성능데이터 가공 및 분석 알고리즘을 제공하며, 트랜잭션과 SQL을 연계하여 다양한 관점의 교차분석이 가능한 DB 성능 분석 엔진을 제공할 수 있다.
먼저, 본 발명의 특징을 요약하면, 상기의 목적을 달성하기 위한 본 발명의 일면에 따른 성능분석 시스템은, 애플리케이션, 상기 애플리케이션의 SQL 처리를 위한 데이터베이스, 상기 애플리케이션의 상기 데이터베이스와 연동한 트랜잭션의 발생에 따른 트리거에 의해 API(Application Programming Interface)를 기동하고, 각 트랜잭션의 시작 시점 및 종료 시점 사이의 각 SQL 단위의 성능데이터를 상기 데이터베이스로부터 수집하고, 상기 성능데이터를 상기 애플리케이션의 트랜잭션 및 상기 SQL 단위의 정보와 함께 레포지토리에 저장하는 수집 및 저장부 및 상기 레포지토리에 저장된 상기 성능데이터를 분석하여 상기 각 트랜잭션 또는 상기 각 SQL 단위에 대한 성능분석정보를 제공하는 분석정보 제공부를 포함한다.
일 실시예에 있어서, 상기 수집 및 저장부는, 스냅샷 방식이 아닌 각 트랜잭션 이벤트 발생에 대한 상기 각 트랜잭션의 모든 SQL 단위의 성능데이터를 손실없이 수집하는 것을 특징으로 할 수 있다.
일 실시예에 있어서, 상기 수집 및 저장부의 레포지토리는, 데이터 수집시간, 상기 각 트랜잭션의 트랜잭션 식별자, 상기 각 SQL의 SQL 식별자를 포함하여 성능데이터를 저장하는 것을 특징으로 할 수 있다.
일 실시예에 있어서, 상기 수집 및 저장부는 API(Application Programming Interface)를 통해 전달 받은 트랜잭션 식별정보 및 상기 데이터베이스로부터 상기 성능데이터가 상기 레포지토리에 수집되도록 제어하고, 상기 분석정보 제공부는 유저 인터페이스를 통해 상기 레포지토리와 연동하는 것을 특징으로 할 수 있다.
일 실시예에 있어서, 상기 수집 및 저장부는, 설정에 따라 상기 레포지토리에 저장 후 소정의 시간이 경과한 성능데이터를 제거하고, 상기 분석정보 제공부의 유저 인터페이스를 통해 상기 레포지토리의 성능데이터를 조회하고 제거하도록 지원하는 것을 특징으로 할 수 있다.
일 실시예에 있어서, 상기 분석정보 제공부는, 상기 각 트랜잭션에 속한 하나 이상의 내부 SQL의 성능분석정보 또는 상기 각 SQL을 수행한 하나 이상의 트랜잭션의 성능분석정보를 교차적으로 제공하는 것을 특징으로 할 수 있다.
일 실시예에 있어서, 상기 분석정보 제공부는, 트랜잭션에서 수행된 SQL 성능분석정보를 제공할 때, 각 SQL의 문장 정보 및 CPU 시간을 가장 많이 차지한 BIND 변수값을 제공하는 것을 특징으로 할 수 있다.
상기의 목적을 달성하기 위한 본 발명의 다른 일면에 따른 성능분석 방법은, 애플리케이션의 트랜잭션 발생을 감지하는 단계, 상기 애플리케이션의 트랜잭션의 발생에 따른 트리거에 의해, 각 트랜잭션의 시작 시점 및 종료 시점 사이의 각 트랜잭션 또는 각 SQL 단위의 성능데이터를 상기 데이터베이스로부터 수집하여 레포지토리에 저장하는 수집 및 저장 단계 및 상기 레포지토리에 저장된 상기 성능데이터를 분석하여 상기 각 트랜잭션 또는 상기 각 SQL 단위에 대한 성능분석정보를 제공하는 단계를 포함한다.
일 실시예에 있어서, 상기 수집 및 저장단계에서, 스냅샷 방식이 아닌 각 트랜잭션 이벤트 발생에 대한 상기 각 트랜잭션의 모든 SQL 단위의 성능데이터를 손실없이 수집하는 것을 특징으로 하는 것을 특징으로 할 수 있다.
일 실시예에 있어서, 상기 수집 및 저장 단계에서, 상기 레포지토리는, 데이터 수집시간, 상기 각 트랜잭션의 트랜잭션 식별자, 상기 각 SQL의 SQL 식별자를 포함하여 성능데이터를 저장하는 것을 특징으로 할 수 있다.
일 실시예에 있어서, 설정에 따라 상기 레포지토리에 저장 후 소정의 시간이 경과한 성능데이터를 제거하고, 상기 분석정보 제공부의 유저 인터페이스를 통해 SQL을 이용해 상기 레포지토리의 성능데이터를 조회하도록 지원하는 것을 특징으로 할 수 있다.
일 실시예에 있어서, 상기 분석정보 제공 단계에서, 선택에 따라 상기 각 트랜잭션에 속한 하나 이상의 내부 SQL의 성능분석정보 또는 상기 각 SQL을 수행한 하나 이상의 트랜잭션의 성능분석정보를 교차적으로 제공하는 것을 특징으로 할 수 있다.
본 발명에 따른 애플리케이션 SQL 성능분석 시스템에 따르면, 실행된 SQL에 대한 어플리케이션의 트랜잭션을 식별할 수 있으므로, 문제가 발생했을 때 정확한 애플리케이션 확인이 가능하고 신속한 성능분석이 가능하며, 각 SQL의 시작시점부터 종료시점까지 모든 정보를 빠짐없이 수집하므로, 성능정보의 왜곡을 해소하고 성능분석 오류를 최소화할 수 있다.
최근 End-to-End 분석기법이 애플리케이션 성능분석 방법으로 많이 활용되고 있고, DB구간의 성능분석은 정보의 불확실성 때문에 여전히 블랙박스로 남아 있지만, 본 발명은 DB구간의 성능데이터를 완벽하게 생성하여 불확실성을 제거하고, 기존 APM과 연동하여 완벽한 End-to-End 분석환경 구축이 가능하다.
그리고, 본 발명에 따른 애플리케이션 SQL 성능분석 시스템에 따르면, 현재 실시간 모니터링에 의존하고 있는 운영 시스템의 애플리케이션 성능관리 방법을 개선하여, 특정 트랜잭션을 지정하고 이에 대한 성능데이터를 특정 시간대에 원하는 만큼만 생성할 수 있도록 제한함으로써 예상하지 않은 시스템 과부하를 예방해 안전한 운용이 가능하고 불필요한 자원낭비를 최소화할 수 있으며, 실시간 모니터링을 통해 문제점을 발견하고 트랜잭션 필터링, 데이터 수집 및 집중 분석, 신속한 해결방안 제시까지 운영 환경의 성능관리의 효율성을 업그레이드시킬 수 있다.
이에 따라, 본 발명은, SI(System Integration) 프로젝트의 애플리케이션 성능개선 및 이를 통한 안정화 기간을 단축할 수 있다. 즉, 통합 테스트 및 성능 테스트에서 신속한 원인분석과 정확한 문제해결로 인한 전체 애플리케이션 성능을 개선할 수 있고, 안정화 기간 단축을 통해 프로젝트 기간을 단축시킬 수 있는 이점이 있다. 또한, 본 발명은, SI 프로젝트에서 안정화 기간 단축 및 전문 튜닝 인력 비용을 절감시키고, 운영 시스템 애플리케이션 성능 향상으로 인한 고객 만족도 제고는 물론 개발인력 생산성 향상 및 고용비용을 절감할 수 있고, 하드웨어 및 소프트웨어 증설/유지 비용을 절감시킬 수 있는 이점이 있다.
본 발명에 관한 이해를 돕기 위해 상세한 설명의 일부로 포함되는 첨부도면은, 본 발명에 대한 실시예를 제공하고 상세한 설명과 함께 본 발명의 기술적 사상을 설명한다.
도 1은 본 발명의 일실시예에 따른 애플리케이션 SQL 성능분석 시스템을 설명하기 위한 도면이다.
도 2는 본 발명의 일실시예에 따른 애플리케이션 SQL 성능분석 시스템의 기본 개념을 설명하기 위한 도면이다.
도 3은 본 발명의 일실시예에 따른 애플리케이션 SQL 성능분석 시스템의 이벤트 방식 성능데이터의 수집을 설명하기 위한 도면이다.
도4는본 발명의 일실시예에 따른 애플리케이션 SQL 성능분석 시스템의 정확하고 편리한 트랜잭션 단위의 성능 추적을 설명하기 위한 도면이다.
도5는본 발명의 일실시예에 따른 애플리케이션 SQL 성능분석 시스템의 트랜잭션 필터링을 설명하기 위한 도면이다.
도6은본 발명의 일실시예에 따른 애플리케이션 SQL 성능분석 시스템의 데이터베이스 관점의 완벽한 애플리케이션 성능 분석을 설명하기 위한 도면이다.
도 7은 본 발명의 일실시예에 따른 애플리케이션 SQL 성능분석 시스템의 운영환경에 적용 가능한 유연성을 설명하기 위한 도면이다.
도 8은 본 발명의 일실시예에 따른 애플리케이션 SQL 성능분석 시스템의 SI 프로젝트 환경에서 신속하고 정확한 성능 테스트와 안정화 기간의 단축을 설명하기 위한 도면이다.
도 9는 본 발명의 일실시예에 따른 애플리케이션 SQL 성능분석 시스템의 문제의 트랜잭션의 검출과 분석 및 조치가 용이하게 이루어지는 최적의 성능 관리를 설명하기 위한 도면이다.
이하에서는 첨부된 도면들을 참조하여 본 발명에 대해서 자세히 설명한다. 이때, 각각의 도면에서 동일한 구성 요소는 가능한 동일한 부호로 나타낸다. 또한, 이미 공지된 기능 및/또는 구성에 대한 상세한 설명은 생략한다. 이하에 게시된 내용은, 다양한 실시 예에 따른 동작을 이해하는데 필요한 부분을 중점적으로 설명하며, 그 설명의 요지를 흐릴 수 있는 요소들에 대한 설명은 생략한다. 또한 도면의 일부 구성요소는 과장되거나 생략되거나 또는 개략적으로 도시될 수 있다. 각 구성요소의 크기는 실제 크기를 전적으로 반영하는 것이 아니며, 따라서 각각의 도면에 그려진 구성요소들의 상대적인 크기나 간격에 의해 여기에 기재되는 내용들이 제한되는 것은 아니다.
본 발명의 실시예들을 설명함에 있어서, 본 발명과 관련된 공지기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략하기로 한다. 그리고, 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다. 상세한 설명에서 사용되는 용어는 단지 본 발명의 실시 예들을 기술하기 위한 것이며, 결코 제한적이어서는 안 된다. 명확하게 달리 사용되지 않는 한, 단수 형태의 표현은 복수 형태의 의미를 포함한다. 본 설명에서, "포함" 또는 "구비"와 같은 표현은 어떤 특성들, 숫자들, 단계들, 동작들, 요소들, 이들의 일부 또는 조합을 가리키기 위한 것이며, 기술된 것 이외에 하나 또는 그 이상의 다른 특성, 숫자, 단계, 동작, 요소, 이들의 일부 또는 조합의 존재 또는 가능성을 배제하도록 해석되어서는 안 된다.
또한, 제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되는 것은 아니며, 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다.
도 1은 본 발명의 일실시예에 따른 애플리케이션 SQL 성능분석 시스템(1000)을 설명하기 위한 도면이다.
도 1을 참조하면, 본 발명의 일실시예에 따른 성능분석 시스템(1000)은, 애플리케이션 서버(50)와 연동하여 애플리케이션의 수행을 지원하기 위해, 데이터베이스(DB)(100), 수집 및 저장부(200), 및 분석정보 제공부(300)를 포함한다. 성능분석 시스템(1000)은, 애플리케이션(AP) 서버(50)의 애플리케이션의 수행에 있어서, 데이터베이스(100)에 저장 관리되는 데이터를 제공하여, 애플리케이션의 수행을 지원한다.
본 발명에서 데이터베이스(DB)(100)는 레포지토리(repository)에 저장된 데이터의 집합에 한정되지 않으며, 레포지토리에 데이터를 저장 및 관리하는 데이터베이스 관리시스템(DBMS: Database Management System)을 포함하는 개념이다. DBMS의 예로는 오라클(Oracle), MySQL, MariaDB, IBM DB2, z/OS DB2, 사이베이스(Sybase), 인포믹스(Infomix) 등이 잘 알려져 있다. DBMS는, 축적된 자료구조의 정의, 자료구조에 따른 자료의 축적, 데이터베이스 언어에 의한 자료 검색 및 갱신, 복수 사용자로부터 자료처리의 동시실행제어, 갱신 중에 이상이 발생했을 때 갱신 이전의 상태로 복귀, 정보의 기밀보호(security) 등의 기능을 수행하며, 이와 같은 DB 또는 DBMS에 대하여는 잘 알려져 있으므로 더 자세한 설명은 생략한다.
수집 및 저장부(200)는, 애플리케이션 서버(50)에서의 데이터베이스(100)와 연동한 트랜잭션의 발생에 따른 트리거(trigger)에 따라, 각 트랜잭션의 시작 시점 및 종료 시점 사이의 각 SQL 단위의 성능데이터를 데이터베이스(100)로부터 수집하여 레포지토리에 저장한다. 수집 및 저장부(200)에서, 애플리케이션 서버(50)에서의 애플리케이션 실행에 대한 소정의 인터페이스 수행 모듈은 각 트랜잭션의 시작 시점 및 종료 시점을 검출하여, 데이터베이스(100)로부터의 성능데이터 수집을 제어할 수 있다. 또한, 상기 인터페이스 수행 모듈은 각 트랜잭션의 트랜잭션 코드(ID 또는 GUID) 등 트랜잭션 식별자를 검출할 수 있다. 수집 및 저장부(200)는 대용량 및 비정형의 DB 성능데이터를 데이터 손실 없이 실시간으로 레포지토리에 저장하여, 분석정보 제공부(300)에서 이를 가공하여 성능분석정보를 제공하도록 함으로써 DB성능데이터의 활용도를 높일 수 있게 한다. 수집 및 저장부(200)는, API(Application Programming Interface)를 이용한 트랜잭션 식별정보와 데이터베이스(100)로부터 상기 성능데이터가 상기 레포지토리에 수집되도록 제어할 수 있다. 여기서, 성능데이터로는 애플리케이션 서버(50)에서의 애플리케이션 실행(execution)에 따른, DBMS 구간의 CPU(Central Processing Unit) 점유 시간(CPU Time), 경과 시간(Elapsed Time), 실행된 논리적 읽기의 수(Logical Read), 실행된 물리적 읽기의 수(Physical Read), 록(Lock)이나 록 대기의 수(Lock Wait) 등을 포함한다.
분석정보 제공부(300)는, 수집 및 저장부(200)의 레포지토리에 저장된 상기 성능데이터를 분석하여 각 트랜잭션 또는 각 SQL 단위에 대한 성능데이터의 목록 등의 성능분석정보를 가시화(Visualization)하여 제공한다. 분석정보 제공부(300)는, 유저 인터페이스를 통해 상기 레포지토리와 연동될 수 있다.
본 발명의 성능분석 시스템(1000)은, 하드웨어, 소프트웨어, 또는 이들의 결합으로 이루어질 수 있다. 예를 들어, 본 발명의 성능분석 시스템(1000)은 본 발명에서 기술되는 기능/단계/과정들을 수행하기 위한 적어도 하나의 프로세서를 가지며 인터넷 상의 서버 형태로 구현될 수도 있다. 성능분석 시스템(1000)은, 온라인과 배치(Batch), 스탠드-얼론(Stand-alone) 등 다양한 애플리케이션 환경에서, Java, C, C++, C#, Cobol, Scripts 와 같은 다양한 언어로 된 애플리케이션의 실행을 지원할 수 있다.
도 2는 본 발명의 일실시예에 따른 성능분석 시스템(1000)의 기본 개념을 설명하기 위한 도면이다.
도 2와 같이, 본 발명의 성능분석 시스템(1000)은, 트랜잭션 식별이 가능한 데이터베이스(100)의 SQL(structured query language) 성능 분석 도구가 된다. 기존에는 트랜잭션 식별정보가 없는 SQL 단위로만 분석하였으나, 본 발명에서는 각 트랜잭션 단위로 그에 속한 SQL을 구분하여 분석할 수 있는 환경으로 개선하였다.
따라서, 성능분석의 대상이 되는 SQL을 단순히 SQL로만 분석하는 것이 아니라, 어떤 트랜잭션의 SQL인지를 특정할 수 있게 되고, 이에 따라 어플리케이션에 따른 SQL의 성능 개선과 같은 여러가지 유지 보수 작업이 가능해 진다.
레포지토리에 있는 데이터의 저장은 트랜잭션의 시작과 끝을 기준으로 하위에서 실행되는 SQL 관련 성능데이터를 저장하는 방식 또는 트랜잭션과 SQL을 각각 특정할 수 있는 방법이라면, 다양한 DBMS에 대하여 구조를 변경하여 적용하는 것이 가능하다.
도 3은 본 발명의 일실시예에 따른 성능분석 시스템의 이벤트 방식 성능데이터의 수집을 설명하기 위한 도면이다.
도 3과 같이, 본 발명의 성능분석 시스템(1000)은, 기존과 같은 스냅샷 방식(일정한 시간 간격으로 DB 상태를 사진 찍듯이 수집하는 방식)이 아닌 각 트랜잭션 이벤트 발생에 대한 각 트랜잭션의 모든 SQL 단위의 성능데이터를 손실없이 완벽히 수집하여, 상기 애플리케이션 서버(50)에서 실행되는 애플리케이션에 대한 데이터베이스(50)의 성능분석정보를 정확하고 상세하게 완벽한 형태로 제공할 수 있게 된다.
기존의 SQL 모니터링 방법은 특정 시점에, 해당 데이터베이스에 대한 스냅샷 형식의 성능데이터를 수집하는 방식이다. 이것은 특정 시점에 대한 데이터를 획득할 수 있으나, 그 사이에 다른 SQL이 진행되거나, 특정한 SQL이 종료되는 경우 이를 감지할 수 없다.
도 3을 다시 참조하면, 좌측의 기존 스냅샷 방식에서, 첫번째 스냅샷의 기록과 두번째 스냅샷의 기록 사이에 발생된 SQL 2의 진행여부를 첫번째 및 두번재 스냅샷을 통한 분석으로는 알 수 있는 방법이 없다.
도 3의 오른쪽의 방식은 본 실시예에 따른 방식을 개념적으로 표현한 것이며, 트랜잭션의 시작에서부터 발생되는 이벤트 전체를 성능데이터로 수집하기 때문에, 각 시간에 종속되는 방식의 성능데이터 수집이 아닌 전체적인 진행 프로세스를 파악할 수 있는 데이터수집이 이루어 진다. 또한 트랜잭션을 특정하여 데이터를 수집할 수 있으므로, 대상의 분석이 보다 용이하게 되는 장점이 있다.
도4는본 발명의 일실시예에 따른 성능분석 시스템(1000)의 정확하고 편리한 트랜잭션 단위의 성능 추적을 설명하기 위한 도면이다.
도 4와 같이, 본 발명의 성능분석 시스템(1000)의 분석정보 제공부(300)는, 분석 전용 유저 인터페이스를 통해, 상기 각 트랜잭션 또는 상기 각 SQL 단위에 대한 성능분석정보의 목록을 차트로 제공할 수 있으며, 사용자의 선택에 따라 다수의 성능분석정보 화면(윈도우) 간의 내비게이션이 가능하도록 지원할 수 있다. 예를 들어, 다수의 윈도우에 각 트랜잭션 또는 각 SQL 단위에 대한 성능분석정보의 차트 화면을 표시할 수 있으며, 사용자는 각 윈도우를 선택하여 내비게이션 하면서 필요한 트랜잭션 또는 SQL 단위의 성능분석정보를 확인할 수 있다. 이에 따라 신속한 성능 분석을 지원하게 되며 문제가 되는 애플리케이션, 트랜잭션 또는 SQL 등을 신속히 검출하고 파악할 수 있다.
또한, 본 발명의 성능분석 시스템(1000)의 분석정보 제공부(300)는, 위와 같은 성능분석정보 화면(윈도우)에서 분석 전용 유저 인터페이스 등을 통한 사용자의 선택에 따라, 각 트랜잭션에 속한 하나 이상의 내부 SQL의 성능분석정보 또는 상기 각 SQL을 수행한 하나 이상의 트랜잭션의 성능분석정보를 교차적으로 제공할 수 있다.
또한, 본 발명의 성능분석 시스템(1000)의 분석정보 제공부(300)는, 각 SQL을 수행한 하나 이상의 트랜잭션의 성능분석정보를 제공할 때, 분석 전용 유저 인터페이스 등을 통한 사용자의 선택에 따라, 각 SQL의 문장 정보 및 CPU 시간을 가장 많이 차지한 BIND 변수값 등을 제공할 수 있다.
도5는본 발명의 일실시예에 따른 성능분석 시스템(1000)의 트랜잭션 필터링을 설명하기 위한 도면이다.
도 5와 같이, 본 발명의 성능분석 시스템(1000)의 분석정보 제공부(300)는, 분석 전용 유저 인터페이스 등을 통해, 각 트랜잭션 또는 각 SQL 단위에 대한 성능분석정보의 제공 방식을 데이터 수집시간(예, 초, 분, 시간 등), 트랜잭션 식별자, 트랜잭션 수행 수, 또는 데이터 수집량(예, 수집될 메모리 사이즈 등)으로 선택할 수 있다. 이때 수집 및 저장부(200), 해당 데이터 수집시간, 트랜잭션 식별자, 트랜잭션 수행 수, 또는 데이터수집량 등으로 제한하여 데이터베이스(100)로부터 성능데이터를 수집할 수 있다. 이는 필요한 데이터만 선별하여 수집하기 위하여 유용하게 활용될 수 있다.
또한, 본 발명의 성능분석 시스템(1000)의 수집 및 저장부(200)는, 설정에 따라 상기 레포지토리에 저장 후 소정의 시간이 경과한 성능데이터를 제거하여 저장 공간을 확보할 수 있다. 이외에도, 사용자에 의해 분석정보 제공부(300)의 유저 인터페이스를 통해 SQL을 이용해 상기 레포지토리의 성능데이터를 조회하고 불필요한 데이터를 제거하도록 지원하는 것도 가능하다.
또한, 본 발명의 성능분석 시스템(1000)의 분석정보 제공부(300)는, 사용자의 요청에 따라, 각 트랜잭션에서 실행된 SQL의 문장과 각 트랜잭션의 실행 시에 생성된 성능데이터를 분석하여, 각 SQL 단위로 실행성능에 대한 통계 결과의 보고서를 작성하여 제공할 수도 있다. 보고서에는, 데이터 수집시간(예, 초, 분, 시간 등), 트랜잭션 식별자, 트랜잭션 수행 수, 또는 데이터 수집량(예, 수집될 메모리 사이즈 등), 각 트랜잭션 또는 각 SQL에 대한 성능데이터의 목록, 각 트랜잭션 또는 각 SQL의 성능데이터의 비교 정보의 가시화한 통계 정보, 위와 같은 각 SQL의 문장 정보 및 CPU 시간을 가장 많이 차지한 BIND 변수값 등이 포함될 수 있다.
도6은본 발명의 일실시예에 따른 성능분석 시스템(1000)의 데이터베이스 관점의 완벽한 애플리케이션 성능 분석을 설명하기 위한 도면이다.
도 6을 참조하면, 본 발명의 일실시예에 따른 성능분석 시스템(1000)은, 데이터베이스(100)에서 실행된 각 SQL에 대하여, 트랜잭션 식별자를 구분해, 트랜잭션 식별자 기반으로, 데이터 손실없이 완벽히 애플리케이션 서버(50)에서 실행되는 애플리케이션들의 DB 성능 분석이 이루질 수 있는 환경을 제공하는 장점이 있다. 본 발명에서는 기존에는 제공되지 않았던 트랜잭션 식별자, 예를 들어, ID(Identifier) 또는 GUID(Globally Unique Identifier)와 같은 새로운 관점에서 성능분석정보를 제공함으로써, 트랜잭션 단위 성능 분석, 트랜잭션 및 SQL의 교차 분석 등 효과적인 DB 성능 분석을 위한 다양한 방법의 지원이 가능하다. 또한, 성능데이터의 손실이 없는 최고 수준으로 상세한 SQL 성능데이터를 수집하여 분석하므로, 특정 SQL의 과도한 수행이나 특정 대기 이벤트의 관점 등 다양한 관점의 SQL 분석 등이 가능하다.
도 7은 본 발명의 일실시예에 따른 성능분석 시스템(1000)의 운영환경에 적용 가능한 유연성을 설명하기 위한 도면이다.
도 7을 참조하면, 본 발명의 일실시예에 따른 성능분석 시스템(1000)은, 트랜잭션 필터링 기능에 의해, 각 트랜잭션 또는 각 SQL 단위에 대한 성능분석정보의 제공 방식을 데이터 수집시간, 트랜잭션 식별자, 트랜잭션 수행 수, 또는 데이터 수집량 등으로 제한하여 수집하고 분석함으로써, 다양한 운영 환경에 적용 가능한 유연한 성능관리가 가능한 장점이 있으며, 운영 시스템의 부하를 최소화하면서 원하는 트랜잭션에 대한 효과적인 성능분석이 가능한 장점이 있다.
도 8은 본 발명의 일실시예에 따른 성능분석 시스템(1000)의 SI 프로젝트 환경에서 신속하고 정확한 성능 테스트와 안정화 기간의 단축을 설명하기 위한 도면이다.
도 8을 참조하면, 본 발명의 일실시예에 따른 성능분석 시스템(1000)은, SI 프로젝트 환경에서 통합/성능 테스트 단계의 신속, 정확한 성능 분석이 가능하도록 지원한다. 즉, 시스템 구축을 위한 SI 프로젝트의 통합 테스트 및 성능 테스트에서 애플리케이션에 대한 일괄 성능 분석이 가능하다. 또한, 사용자 관점의 업무 기준인 트랜잭션 단위로 수행 가능한 성능 분석 및 튜닝 환경을 구축이 가능하다. 그리고, 신속한 문제점 발견과 정확한 원인 분석으로 효과적인 조치가 가능하고 프로젝트의 안정화 기간을 단축할 수 있는 장점이 있다.
도 9는 본 발명의 일실시예에 따른 성능분석 시스템(1000)의 문제의 트랜잭션의 검출과 분석 및 조치가 용이하게 이루어지는 최적의 성능 관리를 설명하기 위한 도면이다.
도 9를 참조하면, 본 발명의 일실시예에 따른 성능분석 시스템(1000)은, 악성 트랜잭션을 집중 분석할 수 있는 환경을 지원한다. 기존의 운영 시스템에 대한 성능관리는 APM(Application Performance Management) 및 DPM(Database Performance Management)를 이용한 실시간 모니터링에 의존하는 것이 대부분 이었고, 이에 따라 APM에서 문제의 트랜잭션을 발견하더라도 DPM의 성능데이터와 매칭하기가 어려워 원인분석 및 조치에 많은 시간이 소요되며, DB 성능데이터에 손실이 있어 성능분석에 한계가 있었다.
본 발명의 일실시예에 따른 성능분석 시스템(1000)은, 트랜잭션 식별이 가능하고 손실이 없는 성능 데이터를 이용하기 때문에 완벽한 성능 분석이 가능하며, 문제가 있는 트랜잭션 검출과 원인분석 및 조치에 소요되는 시간이 매우 단축된다. 또한, 트랜잭션 필터링 기능은 특정 트랜잭션 또는 특정 시간대의 선별된 성능데이터를 수집할 수 있도록 하여 운영 시스템의 부하를 최소화하면서 최적의 성능 관리가 가능하도록 한다.
이외에도, 발명의 일실시예에 따른 성능분석 시스템(1000)은, 개발자와 관리자에게 최적의 작업 환경을 제공한다. 즉, 다양한 DBMS에 대하여 SQL 작성과 실행, DBMS 오브젝트 정보 조회 및 관리, SQL 성능 분석 및 개선과 같은 유용한 기능을 하나의 클라이언트 단말에서 사용할 수 있는 환경을 제공한다. 개발자는 다양한 DBMS에 접속하여 SQL 개발이 가능하도록 하며, 개발 과정 및 성능 분석 과정을 저장하고 공유함으로써 개발 생산성을 향상시킬 수 있다. DB 관리자는 다양한 DBMS에 접속하여 동시에 오브젝트 관리 및 데이터 관리가 가능하고, SQL 성능 개선 과정을 개발자와 공유가 가능하도록 한다.
상술한 바와 같이, 본 발명에 따른 트랜잭션 기반의 SQL 성능분석정보를 제공하는 성능분석 시스템(1000)에 따르면, 실행된 SQL에 대한 트랜잭션을 식별할 수 있으므로, 문제가 발생했을 때 정확한 애플리케이션 확인이 가능하고 신속한 성능분석이 가능하며, 각 SQL의 시작시점부터 종료시점까지 모든 데이터를 빠짐없이 수집하므로, 성능정보의 왜곡을 해소하고 성능분석 오류를 최소화할 수 있다. 또한, 대용량 및 비정형의 DB성능정보를 데이터 손실 없이 실시간으로 가공하고 빅데이터를 생성함으로써 DB성능데이터의 활용도를 높이게 되며, 비즈니스 실행패턴과 애플리케이션 성능의 관계분석 등 분석관점을 확대하고, 비즈니스의 다양한 요구사항에 대한 분석으로 데이터 활용 영역을 확대할 수 있다.
최근 End-to-End 분석기법이 애플리케이션 성능분석 방법으로 많이 활용되고 있고, DB구간의 성능분석은 정보의 불확실성 때문에 여전히 블랙박스로 남아 있지만, 본 발명은 DB구간의 성능데이터를 완벽하게 생성하여 불확실성을 제거하고, 기존 APM과 연동하여 완벽한 End-to-End 분석환경 구축이 가능하다. 그리고, 본 발명에 따른 성능분석 시스템(1000)에 따르면, 현재 실시간 모니터링에 의존하고 있는 운영 시스템의 애플리케이션 성능관리 방법을 개선하여, 특정 트랜잭션을 지정하고 이에 대한 성능데이터를 특정 시간대에 원하는 만큼만 생성할 수 있도록 제한함으로써 예상하지 않은 시스템 과부하를 예방해 안전한 운용이 가능하고 불필요한 자원낭비를 최소화할 수 있으며, 실시간 모니터링을 통해 문제점을 발견하고 트랜잭션 필터링, 데이터 수집 및 집중 분석, 신속한 해결방안 제시까지 운영 환경의 성능관리의 효율성을 업그레이드시킬 수 있다. 이에 따라, 본 발명은, SI(System Integration) 프로젝트의 애플리케이션 성능개선 및 이를 통한 안정화 기간을 단축할 수 있는데, 통합 테스트 및 성능 테스트에서 신속한 원인분석과 정확한 문제해결로 인한 전체 애플리케이션 성능을 개선할 수 있고, 애플리케이션 성능개선을 통해 프로젝트 기간을 단축시킬 수 있는 이점이 있다. 또한, 본 발명은, SI 프로젝트에서 안정화 기간 단축 및 전문 튜닝 인력 비용을 절감시키고, 운영 시스템 애플리케이션 성능 향상으로 인한 고객 만족도 제고는 물론 개발인력 생산성 향상 및 고용비용을 절감할 수 있고, 하드웨어 및 소프트웨어 증설/유지 비용을 절감시킬 수 있는 이점이 있다.
이상과 같이 본 발명에서는 구체적인 구성 요소 등과 같은 특정 사항들과 한정된 실시예 및 도면에 의해 설명되었으나 이는 본 발명의 보다 전반적인 이해를 돕기 위해서 제공된 것일 뿐, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상적인 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다. 따라서, 본 발명의 사상은 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위 뿐 아니라 이 특허청구범위와 균등하거나 등가적 변형이 있는 모든 기술 사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.
50: 애플리케이션 서버
100: 데이터베이스
200: 수집 및 저장부
300: 분석정보 제공부

Claims (12)

  1. 애플리케이션;
    상기 애플리케이션의 수행을 위한 데이터를 저장하는 데이터베이스;
    상기 애플리케이션의 상기 데이터베이스와 연동한 트랜잭션의 발생에 따른 트리거에 의해, 각 트랜잭션의 시작 시점 및 종료 시점 사이의 각 SQL 단위의 성능데이터를 상기 데이터베이스로부터 수집하고, 상기 성능데이터를 상기 애플리케이션의 트랜잭션 및 상기 SQL 단위의 정보와 함께 레포지토리에 저장하는 수집 및 저장부; 및
    상기 레포지토리에 저장된 상기 성능데이터를 분석하여 상기 각 트랜잭션 또는 상기 각 SQL 단위에 대한 성능분석정보를 제공하는 분석정보 제공부;
    를 포함하는 애플리케이션 SQL 성능분석 시스템.
  2. 제1항에 있어서,
    상기 수집 및 저장부는, 스냅샷 방식이 아닌 각 트랜잭션 이벤트 발생에 대한 상기 각 트랜잭션의 모든 SQL 단위의 성능데이터를 손실없이 수집하는 것을 특징으로 하는 애플리케이션 SQL 성능분석 시스템.
  3. 제1항에 있어서,
    상기 수집 및 저장부의 레포지토리는, 데이터 수집시간, 상기 각 트랜잭션의 트랜잭션 식별자, 상기 각 SQL의 SQL 식별자를 포함하여 성능데이터를 저장하는 것을 특징으로 하는 애플리케이션 SQL 성능분석 시스템.
  4. 제1항에 있어서,
    상기 수집 및 저장부는 API(Application Programming Interface)를 통해 전달 받은 트랜잭션 식별정보 및 상기 데이터베이스로부터 상기 성능데이터가 상기 레포지토리에 수집되도록 제어하고,
    상기 분석정보 제공부는 유저 인터페이스를 통해 상기 레포지토리와 연동하는, 애플리케이션 SQL 성능분석 시스템.
  5. 제1항에 있어서,
    상기 수집 및 저장부는, 설정에 따라 상기 레포지토리에 저장 후 소정의 시간이 경과한 성능데이터를 제거하고, 상기 분석정보 제공부의 유저 인터페이스를 통해 SQL을 이용해 상기 레포지토리의 성능데이터를 조회하고 제거하도록 지원하는, 애플리케이션 SQL 성능분석 시스템.
  6. 제1항에 있어서,
    상기 분석정보 제공부는, 선택에 따라, 상기 각 트랜잭션에 속한 하나 이상의 내부 SQL의 성능분석정보 또는 상기 각 SQL을 수행한 하나 이상의 트랜잭션의 성능분석정보를 교차적으로 제공하는, 애플리케이션 SQL 성능분석 시스템.
  7. 제1항에 있어서,
    상기 분석정보 제공부는, 상기 각 SQL을 수행한 하나 이상의 트랜잭션의 성능분석정보를 제공할 때, 선택에 따라, 각 SQL의 문장 정보 및 CPU 시간을 가장 많이 차지한 BIND 변수값을 제공하는, 애플리케이션 SQL 성능분석 시스템.
  8. 애플리케이션의 데이터베이스와 연동한 트랜잭션의 발생을 감지하는 단계;
    상기 애플리케이션의 데이터베이스와 연동한 트랜잭션의 발생에 따른 트리거에 의해, 각 트랜잭션의 시작 시점 및 종료 시점 사이의 각 트랜잭션 또는 각 SQL 단위의 성능데이터를 상기 데이터베이스로부터 수집하여 레포지토리에 저장하는 수집 및 저장 단계; 및
    상기 레포지토리에 저장된 상기 성능데이터를 분석하여 상기 각 트랜잭션 또는 상기 각 SQL 단위에 대한 성능분석정보를 제공하는 단계
    를 포함하는 애플리케이션 SQL 성능분석 방법.
  9. 제8항에 있어서,
    상기 수집 및 저장단계에서,
    스냅샷 방식이 아닌 각 트랜잭션 이벤트 발생에 대한 상기 각 트랜잭션의 모든 SQL 단위의 성능데이터를 손실없이 수집하는 것을 특징으로 하는 애플리케이션 SQL 성능분석 방법.
  10. 제8항에 있어서,
    상기 수집 및 저장 단계에서,
    상기 레포지토리는, 데이터 수집시간, 상기 각 트랜잭션의 트랜잭션 식별자, 상기 각 SQL의 SQL 식별자를 포함하여 성능데이터를 저장하는 것을 특징으로 하는 애플리케이션 SQL 성능분석 방법.
  11. 제8항에 있어서,
    상기 수집 및 저장 단계에서,
    설정에 따라 상기 레포지토리에 저장 후 소정의 시간이 경과한 성능데이터를 제거하고, 상기 분석정보 제공부의 유저 인터페이스를 통해 SQL을 이용해 상기 레포지토리의 성능데이터를 조회하고 제거하도록 지원하는 애플리케이션 SQL 성능분석 방법.
  12. 제8항에 있어서,
    상기 분석정보 제공 단계에서,
    선택에 따라, 상기 각 트랜잭션에 속한 하나 이상의 내부 SQL의 성능분석정보 또는 상기 각 SQL을 수행한 하나 이상의 트랜잭션의 성능분석정보를 교차적으로 제공하는, 애플리케이션 SQL 성능분석 방법.

KR1020200027120A 2020-03-04 2020-03-04 Dbms구간에서의 애플리케이션 sql 성능분석 시스템 및 방법 KR20210112045A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020200027120A KR20210112045A (ko) 2020-03-04 2020-03-04 Dbms구간에서의 애플리케이션 sql 성능분석 시스템 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200027120A KR20210112045A (ko) 2020-03-04 2020-03-04 Dbms구간에서의 애플리케이션 sql 성능분석 시스템 및 방법

Publications (1)

Publication Number Publication Date
KR20210112045A true KR20210112045A (ko) 2021-09-14

Family

ID=77774426

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200027120A KR20210112045A (ko) 2020-03-04 2020-03-04 Dbms구간에서의 애플리케이션 sql 성능분석 시스템 및 방법

Country Status (1)

Country Link
KR (1) KR20210112045A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102626940B1 (ko) * 2023-08-24 2024-01-18 나무기술 주식회사 가상os 기반의 데이터베이스의 트랜젝션 모니터링 방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102626940B1 (ko) * 2023-08-24 2024-01-18 나무기술 주식회사 가상os 기반의 데이터베이스의 트랜젝션 모니터링 방법

Similar Documents

Publication Publication Date Title
Jung et al. Apollo: Automatic detection and diagnosis of performance regressions in database systems
US11144311B2 (en) Static analysis of higher-order merge conflicts in large software development projects
US7673291B2 (en) Automatic database diagnostic monitor architecture
US9563538B2 (en) Code path tracking
US8005860B1 (en) Object-level database performance management
US20060161895A1 (en) Configuration management system and method of comparing software components
US20060143144A1 (en) Rule sets for a configuration management system
US20060037000A1 (en) Configuration management data model using blueprints
US7376682B2 (en) Time model
WO2007036932A2 (en) Data table management system and methods useful therefor
US20070239799A1 (en) Analyzing log files
US8984023B2 (en) Monitoring stored procedure execution
US11269997B2 (en) Automated dynamic security testing
US8825634B2 (en) Client and database problem determination and monitoring
US7568192B2 (en) Automated scalable and adaptive system for memory analysis via identification of leak root candidates
KR101830936B1 (ko) 데이터베이스와 애플리케이션을 위한 웹기반 성능개선 시스템
KR20210112045A (ko) Dbms구간에서의 애플리케이션 sql 성능분석 시스템 및 방법
US7447694B2 (en) Automated scalable and adaptive system for memory analysis via online region evolution tracking
US20030084071A1 (en) Method and system for managing computer performance
US20050071387A1 (en) Automated scalable and adaptive system for memory analysis via the discovery of co-evolving regions
Parsons et al. A framework for automatically detecting and assessing performance antipatterns in component based systems using run-time analysis
EP3951600B1 (en) Method and system for managing performance for use cases in software applications
US11797419B2 (en) Task-specific logging in digital computer systems
Anderson Understanding contextual factors in regression testing techniques
CN117453190A (zh) 基于云计算的软件开发方法

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E601 Decision to refuse application