KR101628097B1 - 데이터베이스 관리 시스템 및 데이터베이스 관리 방법 - Google Patents

데이터베이스 관리 시스템 및 데이터베이스 관리 방법 Download PDF

Info

Publication number
KR101628097B1
KR101628097B1 KR1020140195067A KR20140195067A KR101628097B1 KR 101628097 B1 KR101628097 B1 KR 101628097B1 KR 1020140195067 A KR1020140195067 A KR 1020140195067A KR 20140195067 A KR20140195067 A KR 20140195067A KR 101628097 B1 KR101628097 B1 KR 101628097B1
Authority
KR
South Korea
Prior art keywords
index
database
query
distribution
queries
Prior art date
Application number
KR1020140195067A
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 KR1020140195067A priority Critical patent/KR101628097B1/ko
Application granted granted Critical
Publication of KR101628097B1 publication Critical patent/KR101628097B1/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
    • 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/22Indexing; Data structures therefor; Storage structures

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

데이터베이스 관리 시스템은 로그 분석부, 데이터 연산부 및 정보 출력부를 포함한다. 상기 로그 분석부는 데이터베이스의 로그 파일에 포함된 쿼리들을 분석하여 쿼리 데이터를 생성한다. 상기 데이터 연산부는 상기 로그 분석부로부터 생성된 쿼리 데이터에 기초하여, 상기 쿼리 데이터 내의 쿼리들에 관련된 컬럼들의 통계 연산을 통해 상기 데이터베이스의 인덱스를 변경한다. 상기 정보 출력부는 상기 인덱스의 변경 결과를 출력한다. 따라서, 쿼리를 기반으로 하여, 데이터베이스 관리 시스템의 처리 속도를 증가시킬 수 있다.

Description

데이터베이스 관리 시스템 및 데이터베이스 관리 방법 {SYSTEM AND METHOD FOR MANAGING DATABASE}
본 발명의 데이터베이스에 관한 것으로, 보다 구체적으로는 데이터베이스 관리 시스템 및 데이터베이스 관리 방법에 관한 것이다.
많은 시스템은 데이터의 처리를 위해서 데이터베이스 관리 시스템(Database Management System; DBMS)을 활용한다. 데이터베이스 관리 시스템은, 로그 저장, 설정 정보를 저장 및 파일, 이미지 등의 자료를 저장하는 등 그 활용 범위가 광범위하다.
데이터베이스 관리 시스템이 검색 및 저장에 편리성을 제공하고 빠른 속도를 제공하는 것은 맞지만 사용 방법에 따라 성능의 차이가 극명하게 드러난다. 만약 비효율적인 방식으로 데이터베이스 관리 시스템을 사용할 경우 극심한 성능 저하 현상이 발생할 수 있다. 이러한 성능저하 현상은 개발 시점보다는 운영 시점에서 데이터가 증가함에 따라 발생하는 경우가 많으며 성능 저하 현상이 발생한 이후 속도 향상을 위해 여러가지 노력이 필요하게 된다.
이러한 노력들은 하드웨어의 증설, 소프트웨어의 최적화 등도 있지만 가장 중요한 것은 데이터베이스 관리 시스템 및 쿼리의 최적화이다. 하드웨어 증설로는 수배에서 수십배의 성능 향상이 가능하지만, 데이터베이스 관리 시스템 및 쿼리의 최적화로는 수천배에서 수만배의 성능 향상도 가능하다. 그런 이유로 많은 시스템들이 성능 저하 현상이 발생한 경우 데이터베이스 관리 시스템의 최적화를 진행하게 되는데 이는 데이터베이스 관리 시스템에 대한 지식 및 경험이 많은 사람이 담당하는 경우가 많다. 회사에 따라 이를 전문적으로 담당하는 데이터베이스 관리자(Database Administration; DBA)가 있는 경우도 있고 개발자 중 데이터베이스 관리 시스템에 대해 이해도가 높은 직원이 맡는 경우도 있다. 이렇게 최적화를 진행하는데 있어서 몇 가지 문제가 존재한다. 우선 성능 저하 현상이 발생한 이후에 최적화를 진행하기 때문에 대응이 느릴 수밖에 없다. 또한 숙련된 기술자가 쿼리를 분석하고 데이터베이스 관리 시스템을 재설계해야 하므로 쿼리 양에 따라 시간도 오래 걸리며 기술자의 능력에 따라 많은 차이가 발생하게 된다.
따라서, 데이터베이스 관리 시스템에서 발생하는 쿼리 로그를 바탕으로 데이터베이스 관리 시스템의 사용 형태를 분석하고 이 형태에 맞는 최적화를 자동으로 진행하여야 할 필요성이 있다.
본 발명의 일 실시예는 데이터베이스를 효율적으로 최적화 할 수 있는 데이터베이스 관리 시스템을 제공한다.
본 발명의 다른 실시예는 데이터베이스를 효율적으로 최적화 할 수 있는 데이터베이스 관리 방법을 제공한다.
본 발명의 일 실시예에 따른 데이터베이스 관리 시스템은 로그 분석부, 데이터 연산부 및 정보 출력부를 포함한다. 상기 로그 분석부는 데이터베이스의 로그 파일에 포함된 쿼리들을 분석하여 쿼리 데이터를 생성한다. 상기 데이터 연산부는 상기 로그 분석부로부터 생성된 쿼리 데이터에 기초하여, 상기 쿼리 데이터 내의 쿼리들에 관련된 컬럼들의 통계 연산을 통해 상기 데이터베이스의 인덱스를 변경한다. 상기 정보 출력부는 상기 인덱스의 변경 결과를 출력한다.
일 실시예에서, 상기 로그 분석부는, 상기 로그 파일에 포함된 쿼리들에서, 쿼리의 대상이 되는 테이블 및 적어도 하나의 컬럼을 추출하여 매트릭스 형태의 상기 쿼리 데이터를 생성할 수 있다. 이 경우, 상기 쿼리 데이터에 포함되는 하나의 쿼리에 관련된 적어도 하나의 컬럼은 내림차순으로 정렬될 수 있다.
일 실시예에서, 상기 데이터 연산부는, 상기 내림차순으로 정렬되는 적어도 하나의 컬럼들에 대하여, 쿼리에 포함되는 컬럼의 종류 및 순서에 따라 상기 쿼리들을 병합한 병합 인덱스를 생성할 수 있다. 또한, 상기 데이터 연산부는 상기 병합 인덱스에 기초하여, 변경 가능한 인덱스 리스트를 작성하고, 상기 인덱스 리스트에 포함된 각각의 인덱스에 대한 분포도를 산출하며, 상기 분포도에 기초하여 변경 가능한 인덱스 리스트 중 적어도 하나의 인덱스를 변경할 수 있다.
일 실시예에서, 상기 인덱스에 대한 분포도는 해당 인덱스에 포함된 컬럼에 속한 데이터의 종류에 기초하여 계산될 수 있다.
일 실시예에서, 상기 데이터 연산부에 의해 수행되는 상기 적어도 하나의 인덱스의 변경은, 인덱스의 추가 또는 인덱스의 삭제를 포함할 수 있다.
본 발명의 다른 실시예에 따른 데이터베이스 관리 방법에 의하면, 데이터베이스의 로그 파일에 포함된 쿼리들을 분석하여 쿼리 데이터를 생성하고, 상기 로그 파일에 포함된 쿼리들에서, 쿼리의 대상이 되는 테이블 및 적어도 하나의 컬럼을 추출하여 매트릭스 형태의 상기 쿼리 데이터를 생성하며, 상기 쿼리 데이터에 기초하여, 쿼리에 포함되는 컬럼의 종류 및 순서에 따라 상기 쿼리들을 병합한 병합 인덱스를 생성하고, 상기 병합 인덱스에 기초하여 인덱스를 변경한다.
일 실시예에서, 상기 쿼리 데이터에 포함되는 하나의 쿼리에 관련된 적어도 하나의 컬럼은 내림차순으로 정렬될 수 있다.
일 실시예에서, 상기 병합 인덱스에 기초하여 인덱스를 변경하는 단계는, 상기 병합 인덱스에 기초하여, 변경 가능한 인덱스 리스트를 작성하는 단계, 상기 인덱스 리스트에 포함된 각각의 인덱스에 대한 분포도를 산출하는 단계 및 상기 분포도에 기초하여 변경 가능한 인덱스 리스트 중 적어도 하나의 인덱스를 변경하는 단계를 포함할 수 있다.
일 실시예에서, 상기 분포도에 기초하여 변경 가능한 인덱스 리스트 중 적어도 하나의 인덱스를 변경하는 단계에서는, 상기 인덱스 리스트 중 기존에 존재하지 않았던 인덱스를 추가하거나, 상기 인덱스 리스트 중 기존에 존재하고 있는 인덱스를 삭제할 수 있다.
일 실시예에서, 상기 인덱스 리스트 중 기존에 존재하지 않았던 인덱스의 추가에 있어서, 상기 인덱스의 분포도가 미리 결정된 임계값보다 높은 경우 상기 인덱스를 추가할 수 있다.
일 실시예에 의하면, 상기 인덱스 리스트 중 기존에 존재하고 있는 인덱스의 삭제에 있어서, 기존에 존재하는 인덱스가 상기 병합 인덱스에 존재하지 않거나 분포도가 미리 결정된 임계값보다 작은 경우 상기 인덱스를 삭제할 수 있다.
일 실시예에 의하면, 상기 데이터베이스 관리 시스템은 상기 병합 인덱스에 기초하여 인덱스를 변경한 이후에 상기 변경 결과를 디스플레이 장치에 표시하는 단계를 더 포함할 수 있다.
본 발명의 일 실시예에 의하면, 데이터베이스를 효율적으로 최적화 할 수 있는 데이터베이스 관리 시스템을 제공할 수 있다.
본 발명의 다른 실시예는 데이터베이스를 효율적으로 최적화 할 수 있는 데이터베이스 관리 방법을 제공한다.
따라서, 쿼리를 기반으로 하여, 데이터베이스 관리 시스템의 처리 속도를 증가시킬 수 있다. 또한 데이터베이스 관리 시스템을 개발 단계부터 최적화 함으로써 시스템이 운영 중 성능 저하로 인해 문제를 발생시킬 여지를 줄일 수 있다. 그리고, 데이터베이스 관리 시스템에 대한 해박한 지식이 없이도 최적화를 시스템이 직접 진행함으로써 데이터베이스 관리 시스템 전문가에 대한 의존도를 줄일 수 있다.
도 1은 데이터베이스 시스템, 본 발명의 일 실시예에 따른 데이터베이스 관리 시스템 및 표시장치를 나타내는 블록도이다.
도 2는 본 발명의 다른 실시예에 따른 데이터베이스 관리 방법을 나타내는 순서도이다.
도 3은 도 2의 방법 중 병합 인덱스에 기초하여 인덱스를 변경하는 단계의 일 예를 나타내는 순서도이다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시 예들을 상세히 설명한다. 이 때, 첨부된 도면에서 동일한 구성 요소는 가능한 동일한 부호로 나타내고 있음에 유의해야 한다. 하기의 설명에서는 본 발명에 따른 동작을 이해하는데 필요한 부분만이 설명되며 그 이외 부분의 설명은 본 발명의 요지를 모호하지 않도록 하기 위해 생략될 것이라는 것을 유의하여야 한다. 또한 본 발명은 여기에서 설명되는 실시 예에 한정되지 않고 다른 형태로 구체화될 수도 있다. 단지, 여기에서 설명되는 실시 예은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여 제공되는 것이다.
도 1은 데이터베이스 시스템, 본 발명의 일 실시예에 따른 데이터베이스 관리 시스템 및 표시장치를 나타내는 블록도이다.
도 1을 참조하면, 데이터베이스 관리 시스템(100), 데이터베이스 시스템(200) 및 표시장치(300)가 도시되어 있다. 데이터베이스 시스템(200)은 데이터베이스 관리 시스템(100)이 최적화 등을 진행하는 시스템이며, 데이터베이스(210) 및 로그 파일(230)을 포함할 수 있다. 본 발명에 따른 데이터베이스 관리 시스템(100)은 로그 분석부(110), 데이터 연산부(130) 및 정보 출력부(150)를 포함한다.
로그 분석부(100)는 데이터베이스 시스템(200)의 로그 파일(230)에 포함된 쿼리들을 분석하여 쿼리 데이터를 생성할 수 있다. 로그 파일(230)은 데이터베이스(210)의 자료들에 대해 요청된 쿼리들에 대한 로그를 기록할 수 있다. 쿼리는 구조적 언어이므로, 로그 분석부(100)는 상기 쿼리들의 구성 요소에 대한 분석을 할 수 있다. 예를 들어, 로그 파일(230)에 다음과 같이 쿼리가 저장되어 있을 수 있다.
SELECT * FROM test WHERE a=1 AND b=2;
위 쿼리와 연관된 테이블이 "test"로 식별되며, 관련 조회에 있어서 "a" 컬럼과 "b" 컬럼이 관여됨을 알 수 있다. 로그 분석부(100)는 위 쿼리를 분석하여, 쿼리 데이터를 생성할 수 있다. 위 쿼리의 예에는 "SELECT" 구문이 사용되었으나, 쿼리의 종류에 따라 "UPDATE" 등 다양한 다른 구문이 사용될 수 있다.
일 실시예에서, 쿼리 데이터는 복수의 쿼리들에 대해, 테이블 및 관련 컬럼들을 포함하는 매트릭스 형태를 가질 수 있다. 일 예로, 다음 표 1과 같은 쿼리 데이터가 생성될 수 있다.
번호 테이블 컬럼 조회 횟수
1 Test a, b 3
2 Test a, b, c 4
3 Test b, c 2
4 Test b 1
5 Test a, c 5
6 Test a 3
7 Test c 5
표 1을 참조하면, 23개의 쿼리들이 예시적으로 포함된 쿼리 데이터가 기재되어 있다. 예를 들어, 번호 1에 대응되는 쿼리는, "Test" 테이블에 대해 "a" 및 "b" 컬럼을 사용하여 조회하였음을 알 수 있으며, 총 3회 조회되었다.
로그 분석부(100)는 위 쿼리 데이터를 컬럼에 대해 내림차순으로 정렬할 수 있다. 예를 들어, [표 1]은 다음과 [표 2]와 같이 정렬될 수 있다.
번호 테이블 컬럼 조회 횟수
6 Test a 3
1 Test a, b 3
2 Test a, b, c 4
5 Test a, c 5
4 Test b 1
3 Test b, c 2
7 Test c 5
위 [표 2]를 참조하면, 조회에 사용된 컬럼들에 대해 내림차순으로 쿼리 데이터가 정렬되었다. 위 내림차순의 정렬에 있어서, 알파벳 순서로 정렬되며, 컬럼의 공백은 가장 높은 순위인 것으로 정렬되었다. 즉, a 컬럼만이 조회된 쿼리는 a, b 컬럼이 조회된 쿼리보다 순서가 앞선다.
로그 분석부(100)는, 위와 같이 내림차순으로 정렬되는 쿼리 데이터에 대하여, 쿼리에 포함되는 컬럼의 종류 및 순서에 따라 상기 쿼리들을 병합한 병합 인덱스를 생성할 수 있다. 이는 인덱스 관리의 효율성을 위함이다. 예를 들어, 위 [표 2]의 번호 6, 1, 2에 해당되는 쿼리들, 즉 (a), (a, b) 및 (a, b, c)가 조회에 관여된 컬럼들은 병합될 수 있다. 그러나 [표 2]의 번호 5에 해당되는 쿼리, 즉 (a, c)는 위 번호 6, 1, 2에 해당되는 쿼리에 병합될 수 없다. 이는 데이터베이스의 테이블에 대한 인덱스 작업 시 가장 앞의 컬럼부터 연속적으로 일치하여야 해당 인덱스를 사용할 수 있기 때문이다. 다만 위 [표 2]에서, 번호 1, 2에 해당하는 쿼리, 즉 (a, b) 및 (a, b, c)에 해당하는 쿼리들이 존재하지 않았다면, 즉, 번호 6에 해당하는 쿼리 다음에 번호 5에 해당하는 쿼리가 이어졌다면, 번호 5에 해당하는 (a, c) 쿼리는 번호 1에 해당하는 (a) 쿼리와 병합될 수 있었을 것이다.
위와 같은 방식으로 병합된 병합 인덱스는 다음 [표 3]과 같이 나타낼 수 있다.
번호 테이블 컬럼 조회 횟수
1" Test a, b, c 10
5 Test a, c 5
3" Test b, c 3
7 Test c 5
[표 3] 및 [표 2]를 함께 참조하면, [표 2]에서 번호 6, 1, 2에 해당되는 쿼리들은 [표 3]에서 번호 1"에 해당되는 쿼리로 병합되고, [표 2]에서 번호 4, 3에 해당되는 쿼리들은 [표 3]에서 번호 3"에 해당되는 쿼리로 병합되었다. 병합된 쿼리들의 조회 횟수도 합산되었다.
데이터 연산부(130)는 로그 분석부(100)로부터 생성된 쿼리 데이터에 기초하여, 상기 쿼리 데이터 내의 쿼리들에 관련된 컬럼들의 통계 연산을 통해 상기 데이터베이스의 인덱스를 변경할 수 있다. 특히, 상기 병합 인덱스에 기초하여 인덱스를 변경할 수 있다.
해당 인덱스가 필요한지 확인하기 위해서 해당 인덱스의 분포도를 확인할 수 있다. 본 명세서에서 분포도란 전체 열(row) 중 해당 인덱스로 분산할 수 있는 종류를 의미한다. 분포도가 클수록 해당 인덱스 사용시 더욱 빠르게 데이터에 접근할 수 있다.일 예에서, 예를 들어 특정 컬럼에 포함된 데이터의 종류는 10가지인 경우 분포도는 10으로 계산할 수 있다. 또한, 두 개 이상의 컬럼이 포함된 쿼리의 경우, 분포도는 모든 컬럼의 데이터 종류로 계산할 수 있다. 예를들어, (a, b) 데이터셋의 종류가 15가지인 경우 분포도는 15로 계산할 수 있다.
위와 같이 각 컬럼의 분포도를 계산하면 아래 [표 4]와 같은 분포도 결과를 얻을 수 있다.
번호 테이블 컬럼 조회 횟수 분포도
1" Test a, b, c 10 360
5 Test a, c 5 24
3" Test b, c 3 30
7 Test c 5 2
위 [표 4]를 참조하면, 번호 1"에 해당되는 쿼리는 조회 횟수도 상대적으로 높고, 분포도 또한 360으로 높은 것을 알 수 있다. 따라서, (a, b, c) 컬럼을 포함하는 인덱스는 추가시 360배의 성능 향상을 기대할 수 있다. 번호 7에 해당하는 쿼리는 추가시 2배의 성능 향상을 기대할 수 있다.
인덱스의 추가에 있어서, 조회 횟수와 분포도를 모두 고려하여 인덱스 추가를 고려할 수 있다. 조회 회수가 높은 인덱스는 사용 빈도가 높고, 분포도가 높은 인덱스는 추가시 단일 쿼리에 대한 처리 속도가 높이지기 때문이다. 따라서, 본 발명에 따른 데이터베이스 관리 시스템은, 조회 횟수 및 분포도에 대해 미리 결정한 임계치를 두어, 상기 임계치를 초과하는 조회 횟수 또는 분포도에 대응하는 인덱스를 추가하도록 결정할 수 있다. 실시예에 있어서, 분포도만을 인덱스 추가 기준으로 삼을 수도 있고, 조회 횟수와 분포도 모두를 기준으로 삼을 수도 있다. 예를 들어, 컬럼 c에 대한 인덱스의 경우, 조회 횟수는 5이지만 분포도가 2로서 매우 낮으므로 추가하지 않을 것으로 결정할 수 있다.
데이터 연산부(130)는 기존에 존재하는 인덱스를 검색하여 위 [표 4]에 해당하는 인덱스들을 추가할 것인지 결정할 수 있다. 예를 들어, (a, c) 컬럼에 대한 인덱스가 이미 존재하는 경우, 위 [표 4]의 번호 5에 해당하는 인덱스는 추가할 필요가 없다. 그러나, (a, b, c) 컬럼에 대한 인덱스가 기존에 존재하지 않는 경우, 상기 컬럼에 대하여는 조회 횟수도 10으로 높고, 분포도도 360으로 높으므로, 위 인덱스를 추가할 수 있다.
또한, 데이터 연산부(130)는 기존에 존재하는 인덱스 중 조회 횟수가 낮은 인덱스를 삭제할 수 있다. 예를 들어, 기존에 컬럼 d에 대한 인덱스가 존재하고 있다고 할 때, [표 1] 내지 [표 4]를 참조할 때 로그 파일 내에 컬럼 d에 대한 쿼리가 존재하지 않으므로 d에 대한 인덱스를 삭제할 수 있다. 일 실시예에서, 분포도에 대해 미리 결정된 임계치를 설정하여, 인덱스의 분포도가 상기 임계치보다 낮은 경우 해당 인덱스를 삭제할 수 있다. 또는 조회 횟수가 미리 결정된 임계치보다 낮은 경우 해당 인덱스를 삭제할 수 있다.
정보 출력부(150)는 상기 인덱스의 변경 결과를 출력할 수 있다. 출력된 상기 변경 결과는 표시장치(300)로 전달되어 디스플레이 될 수 있다.
도 1에서, 데이터베이스 시스템(200)은 데이터베이스 관리 시스템(100)과 별도의 시스템인 것으로 도시되어 있으나, 구성 변경에 따라 하나의 시스템으로 구현될 수도 있다.
도 2는 본 발명의 다른 실시예에 따른 데이터베이스 관리 방법을 나타내는 순서도이다.
도 2를 참조하면, 본 발명의 다른 실시예에 따른 데이터베이스 관리 방법은, 데이터베이스의 로그 파일에 포함된 쿼리들을 분석하여 쿼리 데이터를 생성하는 단계(S110), 상기 로그 파일에 포함된 쿼리들에서, 쿼리의 대상이 되는 테이블 및 적어도 하나의 컬럼을 추출하여 매트릭스 형태의 상기 쿼리 데이터를 생성하는 단계(S130), 상기 쿼리 데이터에 기초하여, 쿼리에 포함되는 컬럼의 종류 및 순서에 따라 상기 쿼리들을 병합한 병합 인덱스를 생성하는 단계(S150) 및 상기 병합 인덱스에 기초하여 인덱스를 변경하는 단계(S170)를 포함한다.
데이터베이스의 로그 파일에 포함된 쿼리들을 분석하여 쿼리 데이터를 생성하는 단계(S110)에서는, 로그 파일의 쿼리들을 분석하여 테이블, 컬럼 등의 데이터를 추출할 수 있다. 예를 들어, 로그 파일에 다음과 같이 쿼리가 저장되어 있을 수 있다.
SELECT * FROM test WHERE a=1 AND b=2;
위 쿼리와 연관된 테이블이 "test"로 식별되며, 관련 조회에 있어서 "a" 컬럼과 "b" 컬럼이 관여됨을 알 수 있다. 단계(S110)에서는 위 쿼리를 분석하여, 쿼리 데이터를 생성할 수 있다. 위 쿼리의 예에는 "SELECT" 구문이 사용되었으나, 쿼리의 종류에 따라 "UPDATE" 등 다양한 다른 구문이 사용될 수 있다.
상기 로그 파일에 포함된 쿼리들에서, 쿼리의 대상이 되는 테이블 및 적어도 하나의 컬럼을 추출하여 매트릭스 형태의 상기 쿼리 데이터를 생성하는 단계(S130)에서는, [표 1]을 참조하여 전술한 바와 같이 쿼리 데이터를 생성할 수 있다. 이 경우, 정렬 과정을 통해, [표 2]에 나타난 바와 같이, 상기 쿼리 데이터에 포함되는 하나의 쿼리에 관련된 적어도 하나의 컬럼은 내림차순으로 정렬될 수 있다.
상기 쿼리 데이터에 기초하여, 쿼리에 포함되는 컬럼의 종류 및 순서에 따라 상기 쿼리들을 병합한 병합 인덱스를 생성하는 단계(S150)에서는, [표 3]을 참조하여 전술한 바와 같이 병합 인덱스를 생성할 수 있다.
병합 인덱스에 기초하여 인덱스를 변경하는 단계(S170)에서는, 분포도 등을 고려하여, [표 4]를 참조하여 전술한 바와 같이 인덱스를 추가하거나 삭제할 수 있다. 병합 인덱스에 기초하여 인덱스를 변경하는 단계(S170)에 대하여는 도 3을 참조하여 더욱 자세히 후술하도록 한다.
또한, 본 발명의 일 실시예에 따른 데이터 베이스 관리 방법은, 병합 인덱스에 기초하여 인덱스를 변경(S170)한 이후에 상기 변경 결과를 디스플레이 장치에 표시하는 단계를 더 포함할 수 있다.
도 3은 도 2의 방법 중 병합 인덱스에 기초하여 인덱스를 변경하는 단계의 일 예를 나타내는 순서도이다. 도 3을 참조하면, 병합 인덱스에 기초하여 인덱스를 변경하는 단계(S170)는, 상기 병합 인덱스에 기초하여, 변경 가능한 인덱스 리스트를 작성하는 단계(S210), 상기 인덱스 리스트에 포함된 각각의 인덱스에 대한 분포도를 산출하는 단계(S230) 및 상기 분포도에 기초하여 변경 가능한 인덱스 리스트 중 적어도 하나의 인덱스를 변경하는 단계(S250)를 포함한다.
상기 병합 인덱스에 기초하여, 변경 가능한 인덱스 리스트를 작성하는 단계(S210)에서는, [표 4]를 참조하여 전술한 바와 같이, 변경 가능한 인덱스 리스트를 작성할 수 있다. 상기 변경 가능한 인덱스 리스트는, 추가 가능한 인덱스 리스트일 수도 있고 삭제 가능한 인덱스 리스트일 수도 있다.
상기 인덱스 리스트에 포함된 각각의 인덱스에 대한 분포도를 산출하는 단계(S230)에서는, [표 4]에 기재된 바와 같이, 해당 리스트에 대한 분포도를 산출할 수 있다.
상기 분포도에 기초하여 변경 가능한 인덱스 리스트 중 적어도 하나의 인덱스를 변경하는 단계(S250)에서는, 분포도에 따라 기존재하지 않는 인덱스를 추가하거나, 기존재하는 인덱스를 삭제할 수 있다. 변경 가능한 인덱스 리스트 중 분포도가 높은 인덱스가 기존재하지 않는 경우 상기 인덱스를 추가할 수 있다. 또한, 기존재하는 인덱스의 분포도가 낮은 경우 상기 인덱스를 삭제할 수 있다. 또한, 조회 횟수에 기초하여 인덱스를 추가하거나 삭제할 수 있다. 변경 가능한 인덱스 리스트 중 조회 횟수가 높은 인덱스가 기존재하지 않는 경우 상기 인덱스를 삭제할 수 있다. 또한, 기존재하는 인덱스의 조회 횟수가 낮은 경우 상기 인덱스를 삭제할 수 있다. 이를 위해, 조회 횟수 및 분포도와 관련하여 미리 결정된 임계값이 사용될 수 있다.
이 때, 처리 흐름도 도면들의 각 블록과 흐름도 도면들의 조합들은 컴퓨터 프로그램 인스트럭션들에 의해 수행될 수 있음을 이해할 수 있을 것이다. 이들 컴퓨터 프로그램 인스트럭션들은 범용 컴퓨터, 특수용 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서에 탑재될 수 있으므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서를 통해 수행되는 그 인스트럭션들이 흐름도 블록(들)에서 설명된 기능들을 수행하는 수단을 생성하게 된다. 이들 컴퓨터 프로그램 인스트럭션들은 특정 방식으로 기능을 구현하기 위해 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 지향할 수 있는 컴퓨터를 이용하거나 또는 컴퓨터 판독 가능 메모리에 저장되는 것도 가능하므로, 그 컴퓨터를 이용하거나 컴퓨터 판독 가능 메모리에 저장된 인스트럭션들은 흐름도 블록(들)에서 설명된 기능을 수행하는 인스트럭션 수단을 내포하는 제조 품목을 생산하는 것도 가능하다. 컴퓨터 프로그램 인스트럭션들은 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에 탑재되는 것도 가능하므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에서 일련의 동작 단계들이 수행되어 컴퓨터로 실행되는 프로세스를 생성해서 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 수행하는 인스트럭션들은 흐름도 블록(들)에서 설명된 기능들을 실행하기 위한 단계들을 제공하는 것도 가능하다.
또한, 각 블록은 특정된 논리적 기능(들)을 실행하기 위한 하나 이상의 실행 가능한 인스트럭션들을 포함하는 모듈, 세그먼트 또는 코드의 일부를 나타낼 수 있다. 또, 몇 가지 대체 실행 예들에서는 블록들에서 언급된 기능들이 순서를 벗어나서 발생하는 것도 가능함을 주목해야 한다. 예컨대, 잇달아 도시되어 있는 두 개의 블록들은 사실 실질적으로 동시에 수행되는 것도 가능하고 또는 그 블록들이 때때로 해당하는 기능에 따라 역순으로 수행되는 것도 가능하다.
이 때, 본 실시예에서 사용되는 '~부'라는 용어는 소프트웨어 또는 FPGA또는 ASIC과 같은 하드웨어 구성요소를 의미하며, '~부'는 어떤 역할들을 수행한다. 그렇지만 '~부'는 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. '~부'는 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서 '~부'는 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들, 및 변수들을 포함한다. 구성요소들과 '~부'들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 '~부'들로 결합되거나 추가적인 구성요소들과 '~부'들로 더 분리될 수 있다. 뿐만 아니라, 구성요소들 및 '~부'들은 디바이스 또는 보안 멀티미디어카드 내의 하나 또는 그 이상의 CPU들을 재생시키도록 구현될 수도 있다.
본 명세서와 도면에 개시된 본 발명의 실시예들은 본 발명의 기술 내용을 쉽게 설명하고 본 발명의 이해를 돕기 위해 특정 예를 제시한 것일 뿐이며, 본 발명의 범위를 한정하고자 하는 것은 아니다. 여기에 개시된 실시예들 이외에도 본 발명의 기술적 사상에 바탕을 둔 다른 변형 예들이 실시 가능하다는 것은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 자명한 것이다.
100: 데이터베이스 관리 시스템
200: 데이터베이스 시스템
300: 표시장치

Claims (12)

  1. 데이터베이스의 로그 파일에 포함된 쿼리들을 분석하여 쿼리 데이터를 생성하는 로그 분석부;
    상기 쿼리 데이터 내의 쿼리들에 관련된 컬럼들의 분포도를 통계 연산하여, 상기 분포도에 따라 상기 컬럼들에 대응하는 인덱스를 추가 또는 삭제함으로써 상기 데이터베이스의 인덱스를 변경하는 데이터 연산부; 및
    상기 인덱스의 변경 결과를 출력하는 정보 출력부를 포함하는, 데이터베이스 관리 시스템.
  2. 제 1 항에 있어서, 상기 로그 분석부는,
    상기 로그 파일에 포함된 쿼리들에서, 쿼리의 대상이 되는 테이블 및 적어도 하나의 컬럼을 추출하여 매트릭스 형태의 상기 쿼리 데이터를 생성하고,
    상기 쿼리 데이터는, 동일한 쿼리에 대하여 상기 적어도 하나의 컬럼에 따라 내림차순으로 정렬되는, 데이터베이스 관리 시스템.
  3. 제 2 항에 있어서, 상기 데이터 연산부는,
    상기 적어도 하나의 컬럼에 대한 컬럼의 종류 및 순서에 따라 상기 쿼리들을 병합하여 병합 인덱스를 생성하고,
    상기 병합 인덱스에 기초하여, 변경 가능한 인덱스 리스트를 작성하고,
    상기 인덱스 리스트에 포함된 각각의 인덱스에 대한 상기 분포도를 산출하며,
    상기 분포도를 기설정된 임계값과 비교하여, 비교 결과에 따라 선택된 인덱스를 상기 데이터베이스의 인덱스에 추가하거나, 상기 데이터베이스의 인덱스로부터 삭제하는 것을 특징으로 하는, 데이터베이스 관리 시스템.
  4. 제 3 항에 있어서,
    상기 분포도는 상기 각각의 인덱스에 포함된 컬럼에 속한 데이터의 종류에 기초하여 계산되는 것을 특징으로 하는, 데이터베이스 관리 시스템.
  5. 삭제
  6. 데이터베이스의 로그 파일에 포함된 쿼리들을 분석하여 쿼리 데이터를 생성하는 단계;
    상기 로그 파일에 포함된 쿼리들에서, 쿼리의 대상이 되는 테이블 및 적어도 하나의 컬럼을 추출하여 매트릭스 형태의 상기 쿼리 데이터를 생성하는 단계;
    상기 적어도 하나의 컬럼에 대한 컬럼의 종류 및 순서에 따라 상기 쿼리들을 병합한 병합 인덱스들을 생성하는 단계;
    상기 병합 인덱스들에 대응하는 분포도를 통계 연산하는 단계; 및
    상기 분포도에 따라 상기 병합 인덱스들을 상기 데이터베이스의 인덱스에 추가 또는 삭제함으로써 상기 데이터 베이스의 인덱스를 변경하는 단계를 포함하는, 데이터베이스 관리 방법.
  7. 제 6 항에 있어서, 상기 쿼리 데이터는, 동일한 쿼리에 대하여 상기 적어도 하나의 컬럼에 따라 내림차순으로 정렬되는 것을 특징으로 하는, 데이터베이스 관리 방법.
  8. 제 7 항에 있어서, 상기 병합 인덱스들에 대응하는 분포도를 통계 연산하는 단계는,
    상기 병합 인덱스에 기초하여, 변경 가능한 인덱스 리스트를 작성하는 단계;
    상기 인덱스 리스트에 포함된 각각의 인덱스에 대한 상기 분포도를 산출하는 단계를 포함하는, 데이터베이스 관리 방법.
  9. 제 8 항에 있어서, 상기 데이터베이스의 인덱스를 변경하는 단계는,
    상기 분포도를 기설정된 임계값과 비교하는 단계; 및
    상기 비교 결과에 따라 선택된 인덱스를 상기 데이터베이스의 인덱스에 추가하거나, 상기 데이터베이스의 인덱스로부터 삭제하는 단계를 포함하는 것을 특징으로 하는, 데이터베이스 관리 방법.
  10. 제 9 항에 있어서, 상기 데이터베이스의 인덱스를 변경하는 단계는,
    상기 분포도가 상기 임계값보다 크면, 상기 인덱스를 상기 데이터베이스의 인덱스에 추가하는 단계를 포함하는 것을 특징으로 하는, 데이터베이스 관리 방법.
  11. 제 9 항에 있어서, 상기 데이터베이스의 인덱스를 변경하는 단계는,
    상기 병합 인덱스에 상기 인덱스와 관련된 쿼리의 개수 또는 상기 분포도가 상기 임계값보다 작으면 상기 인덱스를 상기 데이터베이스의 인덱스로부터 삭제하는 단계를 포함하는 것을 특징으로 하는, 데이터베이스 관리 방법.
  12. 제 6 항에 있어서,
    상기 변경 결과를 디스플레이 장치에 표시하는 단계를 더 포함하는, 데이터베이스 관리 방법.
KR1020140195067A 2014-12-31 2014-12-31 데이터베이스 관리 시스템 및 데이터베이스 관리 방법 KR101628097B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020140195067A KR101628097B1 (ko) 2014-12-31 2014-12-31 데이터베이스 관리 시스템 및 데이터베이스 관리 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140195067A KR101628097B1 (ko) 2014-12-31 2014-12-31 데이터베이스 관리 시스템 및 데이터베이스 관리 방법

Publications (1)

Publication Number Publication Date
KR101628097B1 true KR101628097B1 (ko) 2016-06-09

Family

ID=56139027

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140195067A KR101628097B1 (ko) 2014-12-31 2014-12-31 데이터베이스 관리 시스템 및 데이터베이스 관리 방법

Country Status (1)

Country Link
KR (1) KR101628097B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102139087B1 (ko) * 2019-09-19 2020-07-29 주식회사 티맥스티베로 인덱스 리두 로그를 이용한 인덱스 복구를 위한 방법, 서버 및 컴퓨터 판독가능 저장매체
KR102360061B1 (ko) * 2020-11-17 2022-02-09 쿠팡 주식회사 데이터베이스 쿼리 효율 향상을 위한 시스템 및 방법.

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140012377A (ko) * 2012-07-20 2014-02-03 유넷시스템주식회사 인덱스 파일 생성방법, 사전 인덱스 파일을 이용한 데이터 검색 방법 및 데이터 관리 시스템, 기록매체

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140012377A (ko) * 2012-07-20 2014-02-03 유넷시스템주식회사 인덱스 파일 생성방법, 사전 인덱스 파일을 이용한 데이터 검색 방법 및 데이터 관리 시스템, 기록매체

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102139087B1 (ko) * 2019-09-19 2020-07-29 주식회사 티맥스티베로 인덱스 리두 로그를 이용한 인덱스 복구를 위한 방법, 서버 및 컴퓨터 판독가능 저장매체
KR102360061B1 (ko) * 2020-11-17 2022-02-09 쿠팡 주식회사 데이터베이스 쿼리 효율 향상을 위한 시스템 및 방법.

Similar Documents

Publication Publication Date Title
JP6870071B2 (ja) テーブルのインクリメンタルクラスタリング保守
US10929384B2 (en) Systems and methods for distributed data validation
US10025823B2 (en) Techniques for evaluating query predicates during in-memory table scans
US10210195B2 (en) Locating data in a set with a single index using multiple property values
US10380269B2 (en) Sideways information passing
US10678794B2 (en) Skew detection and handling in a parallel processing relational database system
US20150310129A1 (en) Method of managing database, management computer and storage medium
US9104784B2 (en) Detecting multi-column composite key column sets
KR101696338B1 (ko) 컬럼-인덱스 데이터 포맷을 이용하여 빅데이터를 효율적으로 처리 및 분석하는 시스템 및 방법
US10565201B2 (en) Query processing management in a database management system
US8504598B2 (en) Data perturbation of non-unique values
US10067962B2 (en) Expression based synopsis of database tables
US20180276264A1 (en) Index establishment method and device
US10210207B2 (en) Parallel execution of merge operations
US10466936B2 (en) Scalable, multi-dimensional search for optimal configuration
US10282438B2 (en) Locating data in a set with a single index using multiple property values
KR101628097B1 (ko) 데이터베이스 관리 시스템 및 데이터베이스 관리 방법
US8805811B2 (en) Executing user-defined function on a plurality of database tuples
US10621173B2 (en) Data processing device, data processing method, and recording medium
US9846713B2 (en) Index-only multi-index access
JP6744179B2 (ja) データ統合方法、データ統合装置、データ処理システム及びコンピュータプログラム
US20160314170A1 (en) SQL Join Plan Representation
US20200167668A1 (en) Dynamic rule execution order
US9563409B2 (en) Systems and methods for managing duplication of operations
US11055233B2 (en) Predictive memory management

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20190604

Year of fee payment: 4