KR101295210B1 - 데이터베이스 관리 방법 및 장치 - Google Patents

데이터베이스 관리 방법 및 장치 Download PDF

Info

Publication number
KR101295210B1
KR101295210B1 KR1020120044472A KR20120044472A KR101295210B1 KR 101295210 B1 KR101295210 B1 KR 101295210B1 KR 1020120044472 A KR1020120044472 A KR 1020120044472A KR 20120044472 A KR20120044472 A KR 20120044472A KR 101295210 B1 KR101295210 B1 KR 101295210B1
Authority
KR
South Korea
Prior art keywords
data
page
database
list
lru
Prior art date
Application number
KR1020120044472A
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 KR1020120044472A priority Critical patent/KR101295210B1/ko
Application granted granted Critical
Publication of KR101295210B1 publication Critical patent/KR101295210B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명은 데이터베이스 관리 방법 및 장치에 대한 것으로서, 데이터베이스에 저장된 데이터 페이지의 적어도 일부를 저장하고 있는 버퍼 캐시, 상기 버퍼 캐시 내에 저장된 데이터 페이지들 중 적어도 일부가 최종 사용 시점을 기준으로 정렬된 LRU(Least Recently Used) 리스트 및 상기 버퍼 캐시에 대한 희생 페이지 요청시, 상기 LRU 리스트에 정렬된 데이터 페이지들 중 상기 데이터베이스와 동기화되었는지 여부에 기초하여 희생 페이지를 선정하는 선정부를 포함한다.

Description

데이터베이스 관리 방법 및 장치{METHOD AND DEVICE FOR MANAGING DATABASE}
본 발명은 데이터베이스 관리 방법 및 그 장치에 관한 것으로, 보다 상세하게는 데이터베이스의 플러시가 발생할 경우 데이터베이스의 성능에 가장 큰 영향을 미치는 디스크 입출력(input and output: I/O) 시간을 최소화하도록 하는 데이터베이스의 성능 향상 방법 및 장치에 관한 것이다.
컴퓨터 기술의 발전을 통해 다양한 산업 분야에서 컴퓨터를 이용한 여러가지 작업이 증가하고 있고, 이 또한 단일 컴퓨터 시스템이 아닌 네트워크를 통해 묶여진 복수의 컴퓨터들이 서로 간의 커뮤니케이션을 통해 사용자의 특정 지시를 수행하는 방식으로 진행하고 있다. 한편, 이러한 시스템들이 보다 복잡해지면서, 대용량 네트워크 로드들 및 관련 어플리케이션, 인터넷 시스템 디멘드를 서비스하는 것에 대한 요구가 증가해왔다.
전형적으로, 컴퓨터 시스템들의 문제점은 사용 가능한 정보 또는 데이터 양이 증가하는 것 및 복수의 사용자들이 입력한 갱신들을 끊임없이 모니터링하는 것을 처리하는 것이다. 디스크들 또는 데이터베이스를 위한 다른 매체 상에 소정의 형태로 저장된 정보의 절대적인 양은 빠르게 증가해왔다.
한편, 데이터베이스 관리 시스템(DataBase Management System, DBMS)은 다수의 사용자들이 데이터베이스 내의 데이터를 접근할 수 있도록 하는 소프트웨어 도구의 집합이다. 보다 구체적으로, DBMS는 데이터베이스 서버에 구현되어 다수의 사용자들 또는 프로그램들의 요구를 체계적으로 처리하고 적절히 응답하여 데이터를 사용할 수 있도록 해준다.
쿼리(Query)의 형태로 수행될 수 있는 데이터베이스에 대한 수많은 삽입, 변경, 조회, 삭제 요청들의 처리에 대해 갖는 DBMS의 중요한 특성인 원자성(Atomic), 일관성(Consistency), 고립성(Isolated) 및 영속성(Durability)를 유지하기 위해 DBMS는 데이터베이스에 대한 로깅(logging)을 수행한다. 로깅은 쿼리 요청에 대한 처리 중 발생하는 데이터베이스의 상태 변화에 대한 내용을 담고 있으므로, 사용자의 요청 또는 시스템의 장애 등으로 인해 데이터베이스의 이전 상태로 복구하고자 할 때 사용될 수 있다.
한편, 실제 데이터가 저장되어 있는 디스크에 접근하기 위해서는 가장 소요 시간이 큰 디스크 입출력(input and output: I/O)이 발생하게 된다. 따라서, 대부분의 DBMS에서는 데이터를 데이터베이스 서버 내부의 버퍼 캐시(Buffer Cache)에 저장한 후, 버퍼 캐시에 저장된 데이터에 대해 쿼리 요청을 처리하며, 버퍼 캐시에 저장된 데이터를 주기적으로 디스크에 기록하여 버퍼 캐시와 디스크의 데이터를 동기화 시킨다. 이 때, 캐시의 데이터를 디스크에 기록하여 데이터간의 동기화를 수행하는 것을 플러시(Flush)라고 한다
도 1은 종래의 DBMS에서 쿼리 요청 처리 및 로깅 프로세스를 도시한 도면이다. 도 1을 참조하여 보다 상세히 설명하면, 쿼리 요청 처리시 해당되는 데이터를 버퍼 캐시 내에서 처리한다. 만약 해당되는 데이터가 버퍼 캐시 내에 없는 경우, 디스크로부터 버퍼 캐시로 읽어온다. 여기서 데이터를 읽어오는 단위가 적을 경우 빈번한 디스크 입출력이 발생할 소지가 있으므로 해당 데이터를 포함하는 특정 사이즈의 데이터 블럭을 읽어오는 것이 바람직하며, 이를 페이지 단위라고 호칭한다. 설명의 편의를 위하여, 이하에서는 데이터베이스의 처리는 페이지 단위로 이루어지는 것으로 가정한다. 다만 데이터 처리가 필요에 따라 데이터 자체, 또는 복수개의 페이지 단위 등 다양한 크기로 이루어질 수 있음은 물론이다.
상기에서 설명한 바와 같이, 쿼리 요청 처리에 따른 데이터 변경은 디스크에서 직접 이루어지는 것이 아니라 버퍼 캐시에 저장된 데이터의 복사본에서 이루어진다. 이처럼 버퍼 캐시에 저장된 데이터의 복사본과 디스크에 저장된 데이터 값이 상이하게 된 경우 이러한 데이터를 포함하는 페이지의 복사본을 더티 페이지(Dirty Page)라고 부른다. 이때 데이터 변경과 관련된 로그 데이터 역시 로그 캐시에 로깅되어, 디스크에 주기적으로 기록 될 수 있다. 로그 캐시는 통상 트랜잭션이 커밋(Commit) 되는 경우 디스크에 기록(플러시) 된다.
현재 버퍼 캐시에 저장되지 않은 페이지에 대한 요청을 처리해야 하고, 버퍼 캐시에 빈 공간이 없는 경우, 새로운 페이지를 버퍼 캐시로 읽어오기 위하여 버퍼 캐시 내에서 하나의 페이지를 삭제하여야 한다. 이를 위하여 선정된 페이지를 희생 페이지(victim page) 라고 한다. 만약 희생 페이지가 더티 페이지인 경우, 희생 페이지에 대하여 플러시를 수행한 후 희생 페이지를 삭제한다. 희생 페이지를 선정하는 방법과 관련하여, 다양한 버퍼 교체 정책이 존재할 수 있다. 이 중 널리 사용되는 것으로 LRU(least recently used) 방법이 있다. LRU는 가장 오래 전에 참조된 페이지를 희생 페이지로 선정하여 버퍼 적중률(hit ratio)을 높이는 알고리즘이다. 이러한 동작은 보통 지연 기록기(Lazy Writer) 스레드 등에서 수행될 수 있다.
버퍼 캐시 저장 공간과 무관하게, 필요에 따라 디스크 및 캐시간의 동기화를 목적으로 플러시가 이루어질 수도 있다. 예를 들면 검사점(Checkpoint) 스레드가 수행되는 경우 등이다. 이 경우 버퍼 캐시내의 모든 페이지에 대하여 플러시가 이루어진다.
버퍼 캐시에 대한 플러시를 수행하는 경우, 버퍼 캐시에 저장된 데이터 페이지가 디스크에 기록되기 전에 이와 대응되는 로그 데이터가 존재한다면, 버퍼 캐시 내의 데이터에 우선하여 로그 캐시부터 디스크에 기록한다(WAL, Write Ahead Log). 만일 그 순서가 뒤바뀌어서 버퍼 캐시에 저장된 데이터들이 디스크에 기록된 후, 로그 데이터가 기록되기 이전에 데이터베이스 서버 장애 등의 문제로 로그 데이터를 기록하지 못하게 되면, 디스크의 데이터 페이지에는 이전의 상태로 복구할 수 없게 되기 때문이다. 또한 저장된 데이터는 임시적인 데이터일 경우도 존재하므로 데이터베이스의 무결성이 유지되지 못하는 큰 문제가 발생할 수 있다.
하지만 플러시 처리가 이루어지는 동안 다른 스레드들이 해당 데이터에 접근을 시도할 수 있는데 이 중 읽기인 경우에는 데이터 변경의 문제가 없어 관계 없지만, 다른 쿼리 요청의 처리를 통해 실제로 기록하고자 하는 데이터가 변경될 수 있다면, 실제로 디스크에 기록되는 데이터는 의도한 데이터와 상이할 수 있다. 따라서, 이를 방지하고자 플러시 처리가 이루어지는 동안에는 버퍼 캐시 내의 해당 페이지의 접근 권한을 제한하여 플러시가 완료될 때까지는 쓰기 모드(WRITE mode)로는 접근할 수 없고, 단지 읽기 모드(READ mode)로만 접근할 수 있도록 한다.
따라서, 로그 캐시 및 버퍼 캐시 모두에 대한 플러시의 경우 로그 데이터의 기록 및 그 이후 버퍼 캐시에 저장된 데이터의 기록이 수반되어 보다 많은 디스크 입출력 시간이 소요되며, 이 시간 동안 해당 페이지에 접근하여 데이터를 변경하려는 모든 다른 스레드들이 접근할 수 없어 DBMS의 성능 저하까지 발생할 수 있다. 특히, 플러시가 이루어지는 데이터 페이지가 Btree의 루트 페이지, 또는 힙(Heap)에서 인서트(insert)가 몰리는 데이터 페이지 같이 접근이 빈번한 데이터 페이지인 경우 그 성능 저하는 더욱 심각해지는 문제점이 발생한다.
대한민국공개특허공보 제10-2010-0082186 플래시 메모리, 캐시 메모리, 그리고 제어기를 포함하는 사용자 장치(주식회사 삼성전자)(문헌 1)에는 비록 직접적으로 디스크에 저장된 데이터베이스에 관한 것은 아니나, 서로 읽기 및 쓰기 속도가 상이한 여러 종류의 메모리(캐시 및 플래시 메모리) 간의 동작에 있어서 플러시가 발생하는 경우 캐시의 세그먼트들 중 가장 긴 시간이 경과된 세그먼트, 즉 LRU 세그먼트에 저장된 데이터를 플래시 메모리에 플러시하는 내용이 개시된다. 그러나, LRU 리스트는 최근 사용된 지 가장 긴 시간이 경과된 데이터 페이지의 순으로 나열되어 있으므로 문헌 1에 의하더라도 해당 데이터 페이지가 WAL을 발생시키는 페이지인지 여부와도 무관하고 실제 디스크에 저장된 물리적인 위치와도 무관하므로, 플러시가 발생하는 페이지의 위치에 따라서 디스크 입출력 시간과 관련한 데이터의 성능 저하는 여전히 존재한다.
[문헌 1] 대한민국공개특허공보 제10-2010-0082186 플래시 메모리, 캐시 메모리, 그리고 제어기를 포함하는 사용자 장치(주식회사 삼성전자) 2010.07.16.
본 발명의 목적은 버퍼 캐시의 플러시 처리시 디스크 입출력 시간을 최소화하여 데이터베이스의 성능을 향상하기 위한 데이터베이스 관리 방법 및 장치를 제공함에 있다.
또한, 본 발명의 다른 목적은 LRU 리스트에 저장된 데이터 페이지의 적어도 일부가 실제로 디스크에 저장된 순서대로 정렬된 페이지 리스트를 이용하여 데이터베이스의 성능을 향상하기 위한 데이터베이스 관리 방법 및 장치를 제공함에 있다.
또한, 본 발명의 또 다른 목적은 실제로 디스크에 저장된 순서대로 적어도 하나 이상의 더티 페이지를 플러시함으로써, 디스크 입출력 효율을 높여 데이터베이스의 성능을 향상하기 위한 데이터베이스 관리 방법 및 장치를 제공함에 있다.
또한, 본 발명의 또다른 목적은 버퍼 캐시에 빈 공간이 없는 경우, 디스크 입출력의 필요가 없는 더티 페이지가 아닌 페이지를 우선적으로 희생 페이지로 선정하여 데이터베이스의 성능을 향상하기 위한 데이터베이스 관리 방법 및 장치를 제공함에 있다.
상기한 바와 같은 본 발명의 목적을 달성하고, 후술하는 본 발명의 특유의 효과를 달성하기 위한, 본 발명의 특징적인 구성은 하기와 같다.
본 발명의 일 태양에 따른 데이터베이스 관리 장치는 데이터베이스에 저장된 데이터 페이지의 적어도 일부를 저장하고 있는 버퍼 캐시, 상기 버퍼 캐시 내에 저장된 데이터 페이지들 중 적어도 일부가 최종 사용 시점을 기준으로 정렬된 LRU(Least Recently Used) 리스트 및 상기 버퍼 캐시에 대한 희생 페이지 선정 요청시, 상기 LRU 리스트에 정렬된 데이터 페이지들 중 상기 데이터베이스와 동기화되었는지 여부에 기초하여 희생 페이지를 선정하는 선정부를 포함한다.
본 발명의 다른 태양에 따른 데이터베이스 관리 방법은 데이터베이스의 성능을 향상하기 위한 장치에서 수행되는 각 단계가, 버퍼 캐시에 대한 희생 페이지 선정 요청시, LRU(Least Recently Used) 리스트에 정렬된 데이터 페이지들 중 상기 데이터베이스와 동기화된 데이터 페이지가 존재하는지 판단하는 단계 및 상기 판단 결과에 기초하여 희생 페이지를 선정하는 단계를 포함하며, 상기 버퍼 캐시는 상기 데이터베이스에 저장된 데이터 페이지의 적어도 일부를 저장하고 있고, 상기 LRU 리스트는 상기 버퍼 캐시 내에 저장된 데이터 페이지들 중 적어도 일부가 최종 사용 시점을 기준으로 정렬된다.
한편, 상기 방법은 서버 컴퓨터로 읽을 수 있는 기록 매체에 저장될 수 있다. 이러한 기록 매체는 컴퓨터 시스템에 의하여 읽혀질 수 있도록 프로그램 및 데이터가 저장되는 모든 종류의 기록매체를 포함한다. 그 예로는, 롬(Read Only Memory), 램(Random Access Memory), CD(Compact Disk), DVD(Digital Video Disk)-ROM, 자기 테이프, 플로피 디스크, 광데이터 저장장치 등이 있으며, 또한 케리어 웨이브(예를 들면, 인터넷을 통한 전송)의 형태로 구현되는 것도 포함된다. 또한, 이러한 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산 방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다.
상술한 바와 같이, 본 발명에 따르면 버퍼 캐시의 플러시 처리시 발생할 디스크 입출력 시간을 최소화하여 데이터베이스의 성능을 향상시킬 수 있다.
또한, 본 발명에 따르면 LRU 리스트에 저장된 데이터 페이지의 적어도 일부가 디스크에 물리적으로 저장된 순서대로 정렬된 페이지 리스트를 이용하여 데이터베이스의 성능을 향상시킬 수 있다.
또한, 실제로 디스크에 저장된 순서대로 적어도 하나 이상의 더티 페이지를 플러시함으로써, 디스크 입출력 효율을 높여 데이터베이스의 성능을 향상시킬 수 있다.
또한, 버퍼 캐시의 빈 공간이 없는 경우, 디스크 입출력의 필요가 없는 더티 페이지가 아닌 페이지를 우선적으로 희생 페이지로 선정하여 데이터베이스의 성능을 향상 시킬 수 있다.
도 1은 종래의 DBMS에서의 쿼리 요청 처리 및 로깅 프로세스를 도시한 도면이다.
도 2는 본 발명의 일실시예에 따라 향상된 데이터베이스 성능을 갖는 데이터베이스 서버를 포함하는 전체 시스템을 나타내는 도면이다.
도 3a 및 도 3b는 본 발명의 제1 실시예 및 제2 실시예에 따라 향상된 데이터베이스 성능을 갖는 데이터베이스 서버의 세부 구성을 나타내는 도면이다.
도 4는 본 발명의 일 실시예에 따라 향상된 데이터베이스 성능을 갖는 데이터베이스 서버에서 수행되는 플러시 처리 방식을 설명하기 위한 도면이다.
도 5a 및 5b는 본 발명의 다양한 실시예들에 따른 선정부에서 LRU 리스트를 이용하여 희생 페이지를 선정하는 과정을 도시한 도면이다.
도 6은 도 5a에서 플러시를 통해 디스크와 동기된 결과 변경된 더티 페이지 리스트 및 LRU 리스트간의 관계를 도시한 도면이다.
도 7은 본 발명의 실시예에 따라 N개의 LRU 리스트를 갖는 경우의 LRU 리스트 및 더티 페이지 리스트간의 관계를 도시한 도면이다.
도 8은 본 발명의 일 실시예에 따라 향상된 데이터베이스 성능을 갖는 데이터베이스 서버에서 사용되는 버퍼 캐시에 저장된 데이터 페이지의 데이터 구조 일부분을 나타내는 도면이다.
도 9는 본 발명의 다양한 실시예들에 따른 선정부에서 희생 페이지 대상이 될 데이터 페이지 선정 및 처리를 도시한 순서도이다.
도 10은 본 발명의 제1 실시예에 따른 더티 페이지 리스트의 관리 및 이에 따른 플러시 처리 흐름을 도시한 순서도이다.
도 11은 본 발명의 제2 실시예에 따른 후보 리스트의 이용 및 이에 따른 플러시 처리 흐름을 도시한 순서도이다.
도 12는 본 발명의 다양한 실시예들에 따라 하나의 데이터 페이지에 대한 플러시 흐름을 도시한 순서도이다.
후술하는 본 발명에 대한 상세한 설명은, 본 발명이 실시될 수 있는 특정 실시예를 예시로서 도시하는 첨부 도면을 참조한다. 이들 실시예는 당업자가 본 발명을 실시할 수 있기에 충분하도록 상세히 설명된다. 본 발명의 다양한 실시예는 서로 다르지만 상호 배타적일 필요는 없음이 이해되어야 한다. 예를 들어, 여기에 기재되어 있는 특정 형상, 구조 및 특성은 일 실시예에 관련하여 본 발명의 정신 및 범위를 벗어나지 않으면서 다른 실시예로 구현될 수 있다. 또한, 각각의 개시된 실시예 내의 개별 구성요소의 위치 또는 배치는 본 발명의 정신 및 범위를 벗어나지 않으면서 변경될 수 있음이 이해되어야 한다. 따라서, 후술하는 상세한 설명은 한정적인 의미로서 취하려는 것이 아니며, 본 발명의 범위는 적절하게 설명된다면 그 청구항들이 주장하는 것과 균등한 모든 범위와 더불어 첨부된 청구항에 의해서만 한정된다. 도면에서 유사한 참조부호는 여러 측면에 걸쳐서 동일하거나 유사한 기능을 지칭한다.
본 발명의 실시예에서, 스레드(Thread)란 특정 목적을 갖는 컴퓨터 프로그램을 수행하기 위한 일련의 수행을 가리키는 광의의 의미이다. 일반적으로 DBMS에서 발생하는 쿼리 요청 처리는 특정 스레드의 수행에 따라 이루어질 수 있으며, 전술한 바와 같이 버퍼 캐시의 플러시를 유발하는 검사점 및 지연 기록기 역시 하나의 스레드의 실행으로 볼 수 있다. 따라서, 본 발명의 명세서에서 쿼리 요청의 처리 및 스레드의 실행은 별도의 반대되는 설명이 없는 이상 동일 또는 유사한 의미로 해석될 수 있다.
한편, 본 발명의 실시예에서, DBMS는 데이터베이스 서버 내에 설치되어 이와 연결된 데이터베이스를 관리하기 위한 시스템을 통칭하는 광의의 의미이므로, 본 발명의 명세서에서 별도의 반대되는 설명이 없는 이상 DBMS 및 데이터베이스 서버는 동일 또는 유사한 의미로 해석될 수 있다.
이하, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있도록 하기 위하여, 본 발명의 바람직한 실시예들에 관하여 첨부된 도면을 참조하여 상세히 설명하기로 한다.
전체 시스템 구성
도 2는 본 발명의 일 실시예에 따라 향상된 데이터베이스 성능을 갖는 데이터베이스 서버를 포함하는 전체 시스템을 개략적으로 도시한 도면이다.
도 2에 도시되어 있는 바와 같이, 본 발명의 일 실시예에 따른 전체 시스템은, 향상된 데이터베이스 성능을 갖는 데이터베이스 서버(100)가 데이터베이스(200)와 연결되어 있으며, 또한 통신 네트워크(400)를 통하여 단말 장치(300)와 연결될 수 있다.
먼저, 본 발명의 일 실시예에 따르면, 향상된 데이터베이스 성능을 갖는 데이터베이스 서버(100)는 단말장치(300)의 요청에 의해 연결된 데이터베이스(200)의 특정 데이터에 대해 쿼리 요청 처리를 수행하는 일반적인 DBMS의 기능을 포함한다. 데이터베이스 서버(100)의 상세한 구성요소 및 기능에 대해서는 도 3a 내지 3b 를 참조하여 후술한다.
본 발명의 일 실시예에 따른 데이터베이스(200)는 데이터베이스 서버(100)로부터의 접근에 의해 변경, 복제 등이 이루어질 수 있는 데이터를 저장하고 있는 저장 공간을 의미하는 광의의 개념이다. 다만, 데이터베이스 서버(100) 내의 캐시 또는 버퍼 공간과 비교할 때, 데이터베이스(200)는 디스크 입출력(I/O)이 필요한 하드 디스크 드라이브, SSD(Solid State Drive) 등의 영구 저장 매체로 이루어진 것이 일반적이다. 또한, 데이터베이스(200)에 저장된 데이터의 변경 또는 복제는 페이지 단위로 수행될 수 있다. 설명의 편의를 위하여 본 발명의 실시예에 따른 데이터베이스(200) 서버의 저장 공간에서는 페이지 단위로 데이터 처리가 이루어지는 것으로 가정한다. 이하에서는, 페이지 단위 데이터를 “데이터 페이지”라고 한다. 또한 특별히 반대되는 기재가 없는 한도 내에서, 버퍼 캐시의 데이터 페이지는 데이터베이스(200)내의 특정 위치에 저장될 페이지 단위 데이터를 저장하는 공간으로써의 의미를 포함한다.
한편, 본 발명의 일 실시예에 따른 단말장치(300)는 통신 네트워크(400)를 통하여 데이터베이스 서버(100)와 연결하고, 데이터베이스 서버(100)를 통해 데이터베이스(200) 내의 특정 데이터에 대한 변경을 포함하는 쿼리 요청 처리를 요청하기 위한 기능을 포함하는 입출력 장치를 의미하며, 데스크톱 컴퓨터뿐만 아니라 노트북 컴퓨터, 워크스테이션, 팜톱(palmtop) 컴퓨터, 개인 휴대 정보 단말기(personal digital assistant: PDA), 웹 패드, 스마트 폰을 포함하는 이동 통신 단말기 등과 같이 메모리 수단을 구비하고 마이크로 프로세서를 탑재하여 연산 능력을 갖춘 디지털 기기라면 얼마든지 본 발명에 따른 단말장치(300)로서 채택될 수 있다. 또한, 본 발명의 일 실시예에 따르면, 통신 네트워크(400)는 유선 및 무선 등과 같은 그 통신 양태를 가리지 않고 구성될 수 있으며, 단거리 통신망(PAN; Personal Area Network), 근거리 통신망(LAN; Local Area Network), 도시권 통신망(MAN; Metropolitan Area Network), 광역 통신망(WAN; Wide Area Network) 등 다양한 통신망으로 구성될 수 있다. 또한, 상기 통신 네트워크(400)는 공지의 월드와이드웹(WWW; World Wide Web)일 수 있으며, 적외선(Infrared Data Association; IrDA) 또는 블루투스(Bluetooth)와 같이 단거리 통신에 이용되는 무선전송기술을 이용할 수도 있다.
도 2에는 데이터베이스 서버(100), 데이터베이스(200), 단말장치(300) 및 통신 네트워크(400)를 각각 단수의 독립된 블록으로 도시하였으나, 이들은 물리적으로 하나의 기계 내에 구현될 수도 있고 일부 또는 그 각각이 물리적으로 다른 기계에 구현될 수도 있거나, 동일한 기능을 하는 물리적으로 복수 개 존재하는 기계가 병렬적으로 존재할 수도 있다. 이렇듯 본 발명은 각 기능이 구현된 기계 또는 데이터베이스의 물리적인 개수 및 위치에 한정되지 않고 다양한 방식으로 설계 변경될 수 있음은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 있어 자명하다.
도 3a 및 도 3b는 본 발명의 제1 실시예 및 제2 실시예에 따라 향상된 데이터베이스 성능을 갖는 데이터베이스 서버(100)의 세부 구성을 나타내는 도면이다. 이하에서는 도 3a 및 도 3b를 참조하여, 본 발명의 제1 실시예 및 제2 실시예에 따라 향상된 데이터베이스 성능을 갖는 데이터베이스 서버(100)를 더욱 상세히 설명한다. 도 3a 및 도 3b에는 기존의 DBMS가 갖는 일반적인 기능 및 이를 수행하기 위한 구성요소는 생략되고, 본 발명을 실시하기 위한 구성요소만을 중심으로 기재하였음은 이해될 수 있다.
데이터베이스 서버 - 제1 실시예
도 3a를 참조하면, 본 발명의 제1 실시예에 따른 데이터베이스 서버(100)는 선정부(110), 플러시부(140), 더티 페이지 리스트 관리부(195)를 포함할 수 있고, 내부 저장 공간으로서 버퍼 캐시(160), 로그 캐시(170), LRU 리스트(180) 및 더티 페이지 리스트(190)를 포함할 수 있다. 한편, 본 발명의 실시예에 따른 데이터베이스 서버(100)는 플러시 처리의 동시성을 높이기 위하여 관리 설정부(120), 버퍼 복사부(130) 및 저장공간으로써 로컬 버퍼(150)을 더 포함할 수 있다.
버퍼 캐시(160)는 상기에서 설명한 바와 같이 입출력 처리 속도 향상을 위해서 최근 사용된 데이터 페이지에 대한 데이터를 저장하는 내부 저장 공간이다. 로그 캐시(170)는 버퍼 캐시(160)의 변경 사항에 대한 로그를 저장한다. 상기에서 설명한 바와 같이, 버퍼 캐시(160) 및 로그 캐시(170)은 플러시를 통하여 디스크 와 동기화하게 된다. 이들은 기존 DBMS가 가지는 일반적인 기능을 모두 포함하여 구성된다.
LRU 리스트(180)에는 버퍼 캐시(160)에 저장된 데이터들 중 적어도 일부가 마지막으로 사용된 시점에 따라 정렬되어 있다. 이 때, 가장 오래 전에 사용된 데이터 페이지의 위치를 LRU(Least Recently Used) 위치, 가장 최근에 사용된 데이터 페이지의 위치를 MRU(Most Recently Used) 위치라고 한다.
선정부(110)는 데이터베이스 서버(110)에 요청된 페이지가 버퍼 캐시(160) 내에 존재하지 않고, 버퍼 캐시에 더 이상 새로운 페이지를 저장할 저장 공간이 없는 경우, 버퍼 캐시(160) 내에서 삭제될 희생 페이지를 선정하는 기능을 수행한다.
선정부(110)는 LRU 리스트(180)에 정렬되어 있는 데이터 페이지들 중 적어도 일부를 대상으로 탐색을 수행하고, 이 중 더티 페이지가 아닌 페이지를 희생 페이지로 선정한다. 이 때 선정부(110)는 LRU 리스트(180)에서 가장 오래 전에 사용된 페이지부터 사용 된 순서에 따라 탐색을 수행하게 된다. LRU 리스트(180) 중 가장 최근에 사용된 페이지까지 희생 페이지 대상으로 선택하는 경우, 가장 오랫동안 사용하지 않은 데이터일수록 다시 사용될 가능성이 적어진다는 이유에 기초한 LRU 리스트의 이용 취지에 어긋날 수 있으며 이에 따른 데이터베이스의 성능 저하가 발생할 수 있다. 따라서, 선정부(110)에 의한 탐색 대상은 LRU 위치로부터 정해진 수의 페이지만큼, 또는 전체 LRU 리스크 크기에 대한 일정 비율, 예컨대 10%,로 제한하는 것이 바람직하다. 검색 범위는 상기와 같이 고정 값을 설정하여 제한 할 수도 있고, 상황에 맞추어 적응적으로 조절할 수도 있다. 예를 들면, 최근 특정 시간 (바람직하게는 10 ~ 30초 정도) 동안 더티 페이지가 늘어나는 추이를 고려하여 이러한 추이를 반영하여 변경해 주거나, 검색 범위 안의 더티 페이지의 비율을 고려하여 검색 범위를 변경해 주는 방법을 사용할 수 있다.
만일 정해진 검색 범위 내에서 더티 페이지가 아닌 페이지를 찾지 못할 경우 처음부터 다시 탐색을 반복하거나, 버퍼 캐시(160)에 대한 플러시를 처리하기 위한 별도의 스레드를 활성화시킬 수 있다. 버퍼 캐시(160)에 대한 플러시를 처리하기 위한 별도의 스레드는 플러시부(140)에서 상세히 설명하기로 한다.
선정부(110)는 LRU 리스트(180)가 복수 개 존재하는 경우에도 유사하게 동작할 수 있다. 하나의 LRU 리스트에서 희생 페이지 대상으로 선정될 데이터 페이지가 존재하지 않는 경우, 다음 LRU 리스트로부터 희생 페이지 대상으로 선정될 데이터 페이지를 추가적으로 탐색하게 된다. 이 경우 약간의 시간 동안 대기한 후 추가 탐색을 수행할 수 있다. 만일 모든 LRU 리스트를 탐색해도 희생 페이지 대상으로 선정될 데이터 페이지가 존재하지 않는 경우, 처음 LRU 리스트부터 다시 탐색을 시도할 수 있다. 선정부(110)에서 희생 페이지를 선정하는 구체적인 실시 예는 도 6a를 참고하여 후술한다.
더티 페이지 리스트(190)는 LRU 리스트(180)에 정렬되어 있는 데이터 페이지들 중 더티 페이지에 대한 정보를 저장하고 있는 리스트이다. 더티 페이지 리스트(190)는 필요에 따라 LRU 리스트 중 일부에 대하여만 구성될 수도 있다. 상기 정보는 더티 페이지 자체 또는 해당 페이지를 나타내는 포인터 등이 될 수 있다. 본 발명의 실시예에 따른 더티 페이지 리스트는 LRU 리스트(180)와는 달리 디스크의 물리적인 위치 순으로 정렬되어있다.
더티 페이지 리스트 관리부(195)는 더티 페이지 리스트(190)를 유지 및 관리하는 기능을 수행한다. LRU 리스트(180) 내의 각 데이터 페이지들은 대응되는 데이터가 디스크에 저장되어 있는 물리적인 위치 순서와는 무관하다. 따라서, LRU 리스트대로 디스크에 기록하는 것은 디스크 입출력 효율이 저하를 가져올 수 있다. 더티 페이지 리스트 관리부(195)는 더티 페이지 리스트(190)를 디스크 상에서의 물리적인 위치에 따라 순차적(sequential)으로 정렬하여 관리한다. 디스크 상에서의 위치는 데이터 베이스(200)의 볼륨(volume), 파일(file) 및/또는 페이지에 대한 식별자를 사용하여 판단할 수 있으며, 이들의 우선순위를 이용하여 순서를 정할 수 있다.
보다 상세하게는, 더티 페이지 리스트 관리부(195)는 플러시의 처리에 필요한 더티 페이지 리스트(190)를 지속적으로 유지 관리하기 위해 LRU 리스트(180) 중 적어도 일부 데이터 페이지, 즉 LRU 리스트(180)의 탐색 대상 범위까지를 탐색하고 이 중 더티 페이지들에 대해 디스크에 물리적으로 저장된 순서대로 정렬해 둔다. 더티 페이지 리스트 관리부(195)는, 특정 페이지가 더티 페이지가 되면 더티 페이지 리스트(190)에 추가하고, 더 이상 더티 페이지가 아니게 되면 더티 페이지 리스트(190)에서 삭제하는 역할을 수행할 수 있다. 만일 버퍼 캐시 내의 특정 데이터 페이지가 삭제되게 되면 LRU 리스트(180)의 순서 또한 변경되는바, 더티 페이지 리스트 관리부(195)는 이를 감지하고 변경된 LRU 리스트(180)에 대응되도록 더티 페이지 리스트(190)를 업데이트할 수 있다.
플러시부(140)는 특정 조건이 발생하는 경우 버퍼 캐시(160)에 대한 플러시를 처리하기 위한 별도의 스레드를 실행시킨다. 여기에서 특정 조건이란, 예를 들어, LRU 리스트(180) 중 LRU 위치에 존재하는 데이터 페이지가 더티 페이지인 경우, 선정부(110)에서 LRU 리스트 탐색시 더티 페이지가 아닌 페이지를 찾을 수 없는 경우, 또는 사용자의 필요에 의해서 버퍼 캐시(160)와 디스크를 동기화 하는 경우(검사점 스레드 수행 등) 등을 포함할 수 있으나, 반드시 이에 한정되는 것은 아니다. 플러시부(140)에서는 이와 같이 버퍼 캐시(160)에 저장된 더티 페이지 중의 일부에 대하여 플러시를 수행하여 디스크와 동기화를 시켜 둠으로써 종래의 데이터베이스 서버들에 비해 성능을 높일 수 있다.
플러시 대상이 되는 더티 페이지들은 더티 페이지 리스트(190)에 기초하여 선정된다. 상기에서 언급한 바와 같이 더티 페이지 리스트(190)는 디스크의 물리적 위치에 기초하여 정렬되어있다. 따라서, 더티 페이지 리스트(190)의 순서대로 디스크에 기록되는 페이지들을 선택하게 되면 디스크에 기록되는 적어도 하나 이상의 페이지들은 디스크 내에서 인접한 위치에 위치하게 되어, 순차적 기록을 위한 디스크 장치의 경우 입출력 효율을 높이는 효과가 있다.
플러시 대상이 되는 페이지를 선택할 때에는, 플러시 처리시에 추가적인 로그 기록을 방지하기 위하여 아직 로그가 기록되지 않은 페이지, 즉 WAL이 발생하는 페이지는 선택에서 제외할 수 있다. WAL이 발생하지 않는 페이지에 한하여 플러시를 처리하는 이유는 로그 데이터의 추가적인 디스크 입출력 시간이 소요됨에 따른 성능 저하를 최대한 방지하기 위함이므로, 반드시 필수적인 것은 아니다. 따라서, 통상의 기술자의 기술 구현 방식에 따라 이를 확인하는 것은 생략될 수 있고, 더티 페이지 리스트 관리부(195)에서 이를 사전에 확인하여 리스트를 구성할 수도 있으며, 검사점 스레드 등 사용자의 필요에 따라 모든 버퍼 캐시 내의 데이터 페이지에 대한 플러시가 수행되는 경우에도 WAL 발생 여부에 대한 고려가 생략될 수 있다.
플러시 처리 방식
한편, 본 발명의 실시예에 따른 데이터베이스 서버(100)는 로컬 버퍼(150)를 이용하여 보다 효율적으로 플러시 처리를 수행할 수 있다. 이하에서는 도 4를 참조하여 하나의 페이지에 대한 플러시 처리 방법에 대하여 설명한다.
도 4는 3개의 페이지 단위 데이터가 저장될 수 있는 버퍼 캐시(160) 및 로컬 버퍼(150)에 저장된 데이터를 예시한 도면이다. 먼저, (a)에서 버퍼 캐시 내에는 데이터 페이지 A, B, C가 기록되어 있다. 여기서 데이터 페이지 A, B, C는 데이터베이스(200) 내의 특정 위치에 저장된 데이터 페이지들, A, B, C로부터 데이터를 읽어 저장한 것으로 가정한다. 한편, 버퍼 캐시 내의 데이터들은 쿼리 요청 처리에 따라 변경될 수 있는데, 이 중 데이터 페이지 B에 포함된 데이터 중 적어도 일부가 쿼리 요청 처리에 의해 변경된 단계를 나타낸 것이 (b)이다. 여기서 데이터 페이지 B'는 데이터 페이지 B에 포함된 데이터 중 적어도 일부가 쿼리 요청 처리에 의해 변경된 데이터를 포함하는 페이지 단위 데이터를 의미한다. 한편, 데이터 페이지 B'에 대해 플러시 처리를 수행하는 경우, 데이터베이스 서버(100)는 먼저 버퍼 캐시 내의 데이터 페이지 B'를 로컬 버퍼로 복사하며 이 단계를 나타낸 것이 (c)이다. 이하에서는, 플러시 처리 대상이 된 데이터 페이지를 '원본 데이터', 원본 데이터가 플러시 처리를 위해 복사되어 로컬 버퍼에 저장된 데이터 페이지를 '복사 데이터'라고 한다.
데이터베이스 서버(100)는 버퍼 캐시(160)가 아닌, 원본 데이터에 대한 복사 데이터를 갖는 로컬 버퍼(150)로부터 데이터베이스(200)로 플러시를 수행하므로 플러시 수행 동안에도 다른 스레드들은 쓰기 모드로 버퍼 캐시(160)의 원본 데이터를 접근하는 것이 가능하다.
도 4는 예시적으로 버퍼 캐시 및 이에 해당하는 로컬 버퍼만을 도시하였으나, 본 발명의 실시예에 따라 로컬 버퍼는 버퍼 캐시의 해당 데이터 페이지에 대응되는 로그 캐시에 저장된 로그 데이터를 포함하여 저장하고, 플러시 처리시 로그 데이터를 포함하는 전체 데이터를 데이터베이스(200)에 기록할 수도 있음은 이해될 수 있다. 또한, 도 4에서 도시된 버퍼 캐시는 3개의 데이터 페이지를 갖도록 예시되어 있으나 반드시 이에 한정되지 않는다.
로컬 버퍼에 저장된 복사 데이터가 플러시되는 동안 버퍼 캐시의 원본 데이터에는 쓰기 모드로 접근이 가능하므로, 버퍼 캐시 내의 원본 데이터는 다른 스레드를 통한 쿼리 요청의 처리에 의해 적어도 일부가 변경될 수 있으며 이 단계를 나타낸 것이 (d)이다. (d)에서는 변경된 데이터 페이지를 원본 데이터인 데이터 페이지 B'와 구별하기 위해 데이터 페이지 B"로 명명하였다. 만일 원본 데이터인 데이터 페이지 B'에 대한 플러시 처리가 완료되지 않은 상황에서 데이터 페이지 B"에 대한 플러시가 다시 발생하는 경우 또 다른 로컬 버퍼 공간에 데이터 페이지 B"를 저장하고 플러시를 수행하면 원본 데이터에 대해 서로 다른 데이터를 갖는 복수개의 복사 데이터(예컨대, B' 및 B")가 존재할 수 있다는 문제점이 발생할 수 있다. 따라서, 이러한 문제점을 방지하기 위해 버퍼 캐시의 데이터 페이지는 플러시 처리 도중에도 쓰기 모드로 접근될 수는 있으나 플러시가 처리 완료될 때까지는 또 다시 플러시 대상으로 선택되지 않도록 한다.
앞서 설명한 플러시 처리 방식에 기초하여, 디스크 입출력 시간을 최소화하면서 버퍼 캐시에 대한 플러시를 수행하기 위한 데이터베이스 서버(100)의 추가적인 구성요소를 이하에 상세히 설명하도록 한다.
관리 설정부(120)는 원본 데이터를 버퍼 캐시(160)로부터 로컬 버퍼(150)에 복사하고 복사된 로컬 버퍼(150) 내의 복사 데이터에 대해 플러시 처리가 완료되는 동안 중복되는 복사 데이터가 발생하지 않도록, 즉 버퍼 캐시(160) 내의 원본 데이터에 플러시가 발생하지 않도록 관리 설정하는 기능을 한다. 보다 상세하게 설명하면, 관리 설정부(120)는 후술할 도 8과 같은 데이터 구조 내의 특정 값을 변경함으로써 특정 기능을 수행 또는 제한할 수 있다.
관리 설정부(120)는 버퍼 복사부(130)가 원본 데이터를 버퍼 캐시(160)로부터 로컬 버퍼(150)로 복사하기 이전에 원본 데이터에 대한 배타적인 접근이 되도록 하며, 이는 복사 과정이 수행되기 이전 또는 수행 도중에 원본 데이터의 내용이 다른 스레드에 의한 쿼리 요청에 대한 처리 결과로서 변경되는 것을 막기 위함이다. 그 구체적인 방식으로 버퍼 캐시(160)의 원본 데이터에 대해 뮤텍스(Mutex: Mutually Exclusive) 상태를 설정할 수 있다. 필요한 절차의 수행 후 버퍼 캐시(160)의 원본 데이터는 다른 스레드에 의해 쓰기 모드를 포함하는 접근이 수행되어야 하므로 관리 설정부(120)는 그 뮤텍스가 해제되도록 뮤텍스 상태를 변경한다.
또한, 관리 설정부(120)는 플러시부(140)에 의해 로컬 버퍼(150)에 저장된 복사 데이터가 데이터베이스(200)로 기록되는 동안 버퍼 캐시(160) 내의 원본 데이터가 희생 페이지의 대상으로 선정되지 않도록 하여야 한다. 그 구체적인 방식으로 버퍼 캐시(160) 내의 원본 데이터가 플러시 대상이 되는 희생 페이지로 선정되지 않도록 설정할 수 있다. 따라서, '희생 페이지 여부'에 희생 페이지를 방지하기 위한 특정 값이 설정되어 있는 경우, 해당 데이터 페이지는 희생 페이지 대상으로 선정되지 않는다. 한편, 플러시가 처리 완료된 이후에는 더 이상 원본 데이터가 희생 페이지에서 배제될 이유가 없으므로 관리 설정부(120)는 그 희생 페이지 여부를 재설정한다.
버퍼 복사부(130)는 버퍼 캐시(160) 내에서 플러시될 대상으로 선정된 원본 데이터를 관리 설정부(120)의 요청에 의해 로컬 버퍼(150)로 복사하는 기능을 수행한다. 전술한 바와 같이, 원본 데이터는 버퍼 캐시(160) 내의 특정 데이터 페이지뿐만이 아닌 이에 대응되는 로그 캐시(170) 내의 로그 데이터도 포함할 수 있으며 이 경우 버퍼 복사부(130)는 버퍼 캐시(160) 및 로그 캐시(170) 모두로부터 데이터를 로컬 버퍼(150)로 복사한다.
다음으로, 플러시부(140)는 관리 설정부(120)의 요청에 의해 로컬 버퍼(150)에 복사된 복사 데이터를 데이터베이스(200)에 플러시한다. 플러시 완료 후 플러시부(140)는 원본 데이터에 대한 희생 페이지 여부 변경을 위해 관리 설정부(120)에 플러시 완료 여부를 통지할 수 있다.
한편, 로컬 버퍼(150), 버퍼 캐시(160), 로그 캐시(170), LRU 리스트(180) 및 더티 페이지 리스트(190)는 모두 데이터베이스 서버(100) 내에 존재하는 저장 공간으로서 데이터베이스(200)에 비해 빠른 데이터 처리 속도를 보장하기 위해 그 물리적 구성은 RAM(Random Access Memory) 또는 캐시(Cache) 메모리 등으로 구현될 수 있으나 반드시 이에 한정되는 것은 아니다. 한편, 버퍼 캐시(160), 로그 캐시(170) 및 LRU 리스트(180)는 각각 종래 기술에서와 같이 쿼리 요청 처리를 위해 데이터베이스(200)로부터 해당하는 데이터 페이지를 복사해서 저장하고, 쿼리 요청 처리에 따른 변경 내용 및 그 로그를 저장하며, 버퍼 캐시 내에 저장된 각 데이터 페이지들을 가장 최근에 사용된 시점에 기초하여 정렬하는 기능을 수행하나, 본 발명에서는 이에 부가하여 플러시 발생시 버퍼 캐시(160)에 저장된 원본 데이터는 직접 플러시되지 않고 또한 뮤텍스 상태가 설정되지 않아 다른 스레드도 쓰기 모드로 접근할 수 있는 특별한 기능을 갖는다. 또한, 로컬 버퍼(150)는 종래 기술에서는 존재하지 않았던 구성요소로서 플러시 발생시 버퍼 캐시(160)의 원본 데이터, 또는 이에 부가하여 로그 캐시(170)의 원본 데이터에 대응되는 로그를 복사해서 복사 데이터로 저장하고, 복사 데이터로부터 플러시를 수행하여 데이터베이스(200)에 기록하는 특별한 기능을 갖는다. 한편, 더티 페이지 리스트(190) 및 이를 정렬, 관리하는 더티 페이지 리스트 관리부(195) 역시 종래 기술에서는 존재하지 않았던 구성요소로서 데이터 페이지들의 디스크상의 물리적인 위치가 순차적으로 나열되어 있으므로 플러시에 따른 디스크 입출력 시간이 최소화될 수 있어 종래의 LRU 리스트(180)에 기초하여 선정하는 경우보다 그 효율이 현저히 높다. 선정부(110) 또한 종래 기술에서는 존재하지 않았던 구성요소이며, 선정부(110)의 기능에 의해 버퍼 캐시(160)로부터 희생 페이지를 선정하고 삭제하는 경우, 선택된 희생 페이지는 디스크 입출력의 필요가 없는, 더티 페이지가 아닌 페이지에 해당하므로 데이터베이스의 성능이 보다 향상될 수 있다.
데이터베이스 서버 - 제2 실시예
도 3b를 참조하면, 제2 실시예에 따른 데이터베이스 서버(100')는 선정부(110') 및 플러시부(140')를 포함할 수 있고 내부 저장 공간으로서 버퍼 캐시(160'), 로그 캐시(170') 및 LRU 리스트(180') 를 포함할 수 있다. 한편, 본 발명의 제2 실시예에 따른 데이터베이스 서버(100')는 관리 설정부(120'), 버퍼 복사부(130') 및 저장공간으로써 로컬 버퍼(150')를 더 포함할 수 있다.
제2 실시예에 따른 데이터베이스 서버(100')에서 각 구성요소들의 기능은 별도의 기재가 없는 한 전술한 제1 실시예에 따른 데이터베이스 서버(100)의 대응되는 구성과 동일하다. 따라서 이하에서는 중복되는 설명은 생략하도록 한다.
플러시부(140')는 더티 페이지에 대한 플러시가 필요한 특정 조건이 발생하는 경우 버퍼 캐시(160')에 대한 플러시를 처리하기 위한 별도의 스레드를 실행시킨다.
본 스레드의 실행을 통해서, 플러시부(140')는 LRU 리스트(180')의 적어도 일부를 이용하여 플러시 대상이 되는 별도의 리스트(이하에서는 '후보 리스트'라 함)를 구성할 수 있다. 이 때, 플러시부(140')는 LRU 리스트의 특정 위치까지를 대상으로 플러시 필요가 있는, 즉 더티 페이지인 데이터 페이지들을 이용하여 후보 리스트를 생성한다. 이 경우, 플러시 처리시에 추가적인 로그 기록을 방지하기 위하여, 로그를 기록할 필요가 없는 페이지들만 선택적으로 후보 리스트에 복사할 수 있다.
탐색 기준인 특정 위치는 전술한 선정부(110')의 희생 페이지 대상 탐색 위치와 동일한 취지로 이해될 수 있으나 반드시 동일해야 하는 것은 아니다. 만일 LRU 리스트(180')가 복수 개 존재하는 경우 각 LRU 리스트에 대해 동일한 작업을 수행할 수 있다.
플러시부(140')는 후보 리스트를 상기 본 발명의 제1 실시예에서의 더티 페이지 리스트(190)와 유사하게 물리적인 디스크 상의 위치 순서에 기초하여 정렬한다. 즉, 디스크 상에서의 물리적인 위치에 따라 순차적으로 정렬하며, 디스크 상에서의 위치는 데이터 베이스(200)의 볼륨(volume), 파일(file) 및/또는 페이지에 대한 식별자를 사용하여 판단할 수 있으며, 이들의 우선순위를 이용하여 순서를 정할 수 있다.
만일 데이터베이스(200)가 SSD 와 같이 순차적 접근(sequential access)과 임의적 접근(random access)간의 속도 차이가 거의 없는 저장 매체로 구성된 경우 후보 리스트에서의 디스크 상의 위치 순서에 기초한 정렬 작업은 생략될 수 있다. 또한, 이러한 정렬 여부는 데이터베이스 서버(100')의 동작과 관련한 사용자 정의 옵션으로 설정 가능하다.
플러시부(140')는 상기 정렬된 후보 리스트의 적어도 일부를 순차적으로 플러시 처리한다. 각 페이지에 대한 플러시 처리 방법은 앞서 제1 실시예에서 설명한 바와 같다.
도 5a 내지 5b는 선정부(110, 110')에서 LRU 리스트(180)을 이용하여 희생 페이지를 선정하는 과정의 일 예를 나타낸 것이다. 도 5a에 의하면, 버퍼 캐시(160)에서 가장 사용된 지 오래된 데이터 페이지는 A이고, 가장 최근에 사용된 데이터 페이지는 F에 해당한다. 도 5a에서 선정부(110, 110')의 탐색 대상이 되는 범위 내에서 A, B, D는 더티 페이지에 해당하고 C는 더티 페이지가 아닌 데이터라고 가정한다. 이 경우, 제1 실시예에 따른 더티 페이지 리스트(190)은 A, B, D를 포함하여 구성될 수 있다. 제2 실시예에 따라 생성되는 후보 리스트도 동일한 구조가 될 수 있다.
도 5a의 LRU 리스트의 경우, 종래 기술에 따르면 사용된 지 가장 오래된 데이터 페이지인 A가 희생 페이지로 선정된다. 그러나, 본 발명의 실시예에 따른 선정부(110, 110')는 더티 페이지가 아닌 페이지를 희생 페이지로 선정하게 되므로 더티 페이지가 아닌 페이지 중 가장 LRU 위치에 가까운 C를 희생 페이지로 선정하게 된다. 더티 페이지가 아니라는 것은 현재 버퍼 캐시(160, 160')에 저장된 데이터 페이지의 내용과 디스크에 저장된 데이터 페이지가 이미 동기화되어 있는 것을 의미하는 것이다. 따라서, 플러시에 따른 별도의 디스크 입출력 작업을 필요로 하지 않으므로 희생 페이지로 선정된 데이터 페이지를 단순히 버퍼 캐시(160, 160')로부터 삭제하는 것으로 버퍼 캐시 내의 빈공간을 확보할 수 있다. 따라서, 종래 기술에 비해 플러시 처리에 따른 별도의 디스크 입출력 시간이 발생하지 않으므로 그 효율이 향상된다.
한편, 희생 페이지 선정 및 처리에 따라 LRU 리스트(180,180')가 변경되며, 선정부(110,110')가 이 기능을 수행할 수도 있다. 도 5b는 앞의 예에서 계속하여, C가 희생 페이지로 선정되어 삭제되고, 이에 따라 LRU 리스트(180) 역시 데이터 페이지 C가 삭제되고, 탐색 대상 범위 내에 새로운 데이터 페이지 E가 들어오고, 또한 새로운 데이터 페이지 G가 LRU 리스트(180, 180')에 포함되도록 변경된 예를 나타낸다.
플러시부(140, 140')에서는 더티페이지들 중 적어도 하나 이상을 플러시하여 디스크와 동기화 시킨다. 본 발명의 실시예에 따르면, 더티 페이지 리스트 또는 후보 리스트를 이용하여 디스크의 물리적 위치 순서대로 플러시 처리를 수행할 수 있다. 도 5a와 같은 상황에서는, B, A, D의 순서로 플러시 처리가 일어날 수 있다. 데이터 페이지 B는 플러시를 통해 디스크와 동기화되고 더 이상 더티 페이지가 아닌 것으로 바뀜에 따라, LRU 리스트(180)는 그대로일지라도 관련된 더티 페이지 리스트(190)는 도 6과 같이 변경된다.
도 5 내지 도 6에서는 하나의 LRU 리스트를 갖는 경우를 예시적으로 설명하였으나, 본 발명은 이에 한정되지 않고 복수 개의 디스크를 연동시켜 하나의 디스크처럼 사용할 수 있도록 하는 RAID(Redundant Array of Independent Disk), 또는 하나의 디스크를 논리적으로 나누는 경우 등 복수 개의 LRU 리스트를 갖는 경우도 포함할 수 있는 것은 통상의 기술자에게 자명하다. N개의 LRU 리스트를 갖는 경우, LRU 리스트 및 더티 페이지 리스트간의 관계는 도 7와 같이 예시적으로 나타낼 수 있다. 도 7에서 LRU 리스트 상의 빗금으로 도시한 부분은 더티 페이지를 나타낸다.
버퍼 캐시(160, 160') 내에 저장된 각각의 데이터 페이지는 도 8에서 예시되는 바와 같은 데이터 구조를 포함할 수 있으며, LRU 리스트(180, 180')는 버퍼 캐시(160, 160') 내에 저장된 데이터 페이지와 동일한 데이터를 구비할 필요 없이도 데이터 구조 내의 특정 필드, 예를 들어 해당 데이터 페이지가 최후로 사용된 시점을 나타내는 최종 사용 시점, 에 기초하여 정렬(sorting)된 페이지 ID만을 포함하도록 구현될 수 있고, 더티 페이지 리스트(190) 또는 후보 리스트 역시 LRU 리스트(180, 180')의 적어도 일부 더티 페이지에 대해 데이터 구조 내의 특정 필드, 예를 들어 해당 데이터 페이지가 디스크 상의 어느 물리적 위치로부터 추출되었는지를 가리키는 데이터 포인터, 에 기초하여 정렬된 페이지 ID만을 포함하도록 구현될 수 있으나 반드시 이에 한정되는 것은 아니다. 도 8에서 예시되는 데이터 구조는 별도의 저장 공간에서 관리될 수 있음은 물론이다.
선정부(110, 110')가 LRU 리스트(180, 180')에 저장된 데이터 페이지가 더티 페이지인지 여부를 판단하는 방법은 상기 도 8의 데이터 구조 중 '더티 페이지 여부'에 특정 값(예를 들어, no_dirty_page로 설정된 값 등)이 설정된 데이터 페이지를 탐색함으로써 수행될 수 있다. 또한, 선정부(110)는 상기 도 8의 데이터 구조 중 '희생 페이지 여부'를 참조하여 특정 값(예를 들어, avoid_victim)을 갖는 데이터 페이지를 희생 페이지 선정 대상에서 제외할 수 있다.
관리 설정부(120, 120')에서 버퍼 캐시(160,160')의 원본 데이터에 대한 배타적인 접근을 수행하도록 방식으로 버퍼 캐시(160, 160')의 원본 데이터에 대해 뮤텍스(Mutex: Mutually Exclusive) 상태를 설정할 수 있다. 구체적으로, '뮤텍스 여부'에 특정 값(예를 들어, mutex로 설정된 값 등)을 설정함으로서 수행될 수 있다.
로컬 버퍼(150, 150')의 복사 데이터가 플러시되어 데이터베이스로 기록되면 데이터베이스(200)에 저장된 데이터와 버퍼 캐시(160, 160')의 원본 데이터간에 그 동기화가 이루어졌으므로 버퍼 캐시(160, 160') 내의 원본 데이터는 더 이상 더티 페이지에 해당하지 않는다. 따라서, 관리 설정부(120, 120')는 버퍼 캐시(160, 160') 내의 원본 데이터가 더티 페이지가 아님을 설정할 수 있으며 이는 데이터 구조 중 '더티 페이지 여부'에 특정 값(예를 들어, no_dirty_page로 설정된 값 등)을 설정함으로써 수행될 수 있다.
도 9는 선정부(110, 110')에서 희생 페이지 대상이 될 데이터 페이지 선정 및 처리를 도시한 순서도이다. 버퍼 캐시(160, 160')에 대해 희생 페이지의 선정이 요청되는 경우(S401), 선정부(110, 110')는 희생 페이지 선정 작업을 수행하게 된다. LRU 리스트(180, 180')가 복수 개 존재하는 경우, 특정 LRU 리스트(180, 180')를 선택(S402)하고, 해당 LRU 리스트의 맨 앞부터 특정 위치 이내에 위치하는 데이터 페이지들 중에서 더티 페이지가 아닌 데이터 페이지가 존재하는지 여부를 판단(S403)한다. 만일 단계 S403에서 더티 페이지가 아닌 데이터 페이지가 존재하지 않는 경우, 해당 LRU 리스트가 마지막 LRU 리스트인지 여부를 판단(S404)하고, 마지막이 아닌 경우 잠시 대기 후 다음 LRU 리스트로 이동(S405)하여 단계 S403을 반복한다.
만일 단계 S404에서 마지막 LRU 리스트까지 더티 페이지가 존재하지 않는 경우, 잠시 대기(S407) 후 최초 LRU 리스트로 돌아가서 단계 S403을 계속한다. 이 경우 플러시부(140, 140')에서 플러시 처리가 수행될 수 있도록 플러시가 필요한 특정 조건을 발생(S406)시킬 수도 있다. 하나의 LRU 리스트(180, 180')를 이용하는 경우 S402, S404, S405 등의 단계가 생략될 수 있음은 물론이다.
만일 단계 S403에서 더티 페이지가 아닌 데이터 페이지가 존재하는 경우, 해당 페이지를 희생 페이지로 선정(S408)하며, 이에 따라 희생 페이지로 선정된 페이지가 버퍼 캐시(160, 160')에서 삭제(S409)되어 빈 공간이 확보된다. 또한, 버퍼 캐시(160, 160')의 변동에 따라 LRU 리스트(180, 180') 역시 변동될 수 있으며, 이 경우 선정부(110, 110')는 LRU 리스트(180, 180')의 유지 관리를 통한 정렬(S410) 또한 수행할 수 있다.
도 10은 본 발명의 제1 실시예에 따른 더티 페이지 리스트의 관리 및 이에 따른 플러시 처리 흐름을 도시한 순서도이다. 더티 페이지 리스트 관리부(195)는 LRU 리스트의 변동에 따라 주기적이고 계속적으로 더티 페이지 리스트(190)를 관리(S411)한다. 보다 구체적으로, LRU 리스트(180)의 특정 위치까지를 탐색하고 이 중 더티 페이지들에 대해 디스크에 물리적으로 저장된 순서대로 더티 페이지 리스트(190)를 정렬한다.
이후, 플러시가 필요한 특정 조건이 발생하였는지 여부를 판단(S412)하고, 플러시가 필요한 특정 조건이 발생되면, 관리 설정부(120)는 플러시 처리를 수행할 별도의 스레드를 실행시킨다. 실행된 스레드에서는, 더티 페이지 리스트(190)로부터 플러시 대상, 즉 리스트의 앞쪽부터 일련의 데이터 페이지를 선정(S413)한 후 도 12에서 상세히 후술하는 바와 같이 플러시 처리를 수행하고, 더티 페이지 리스트 관리부(195)는 플러시에 따른 변경된 LRU 리스트(180)에 따라 더티 페이지 리스트(190)의 유지 관리가 필요한 경우 이를 수행(S415)한다.
도 11은 본 발명의 제2 실시예에 따른 후보 리스트의 이용 및 이에 따른 플러시 처리 흐름을 도시한 순서도이다. 전술한 단계 S412와 같이 더티 페이지에 대한 플러시가 필요한 특정 조건, 예컨대 LRU 리스트 중 LRU 위치에 존재하는 데이터 페이지가 더티 페이지인 경우 등,이 발생하는 경우(S431) 실행 개시되며, 관리 설정부(120')는 LRU 리스트(180')에서 특정 위치까지를 대상으로 탐색하여 데이터 페이지들 중 더티 페이지들의 정보를 후보 리스트로 복사(S432)하고, 후보 리스트에 저장된 데이터 페이지들을 디스크에 물리적으로 저장된 순서대로 정렬(S433)한다.
다음으로, 관리 설정부(120')는 정렬된 후보 리스트의 맨 처음 위치부터 해당하는 데이터 페이지를 읽어 들이고(S434), 해당 데이터 페이지가 WAL이 발생하는 페이지인지 여부를 판단(S435)한다. 만일 해당 데이터 페이지가 WAL이 발생하는 페이지인 경우 단계 S434로 이동하여 다음 위치에 해당하는 데이터 페이지를 읽어 들이고, 만일 해당 데이터 페이지가 WAL이 발생하지 않는 페이지인 경우 도 12를 통해 후술할 바와 같이 플러시 처리(S436)가 된다. 단계 S435에 해당하는 WAL 발생 여부 판단은 필수적이 아닌 선택적인 것이므로 생략될 수 있음은 이미 전술한 바 있다.
도 12는 하나의 데이터 페이지에 대한 플러시 흐름을 도시한 순서도이다. 이하에서는 도 12를 참고하여 상기 도 10내지 11에서의 플러시 처리(S414, S436) 흐름에 대해 상세히 설명한다. 관리 설정부(120, 120')는 다른 스레드의 접근을 통해 원본 데이터가 변경되지 않도록 원본 데이터에 먼저 뮤텍스를 설정한다(S421). 다음으로, 버퍼 복사부(130, 130')는 버퍼 캐시(160, 160') 내의 원본 데이터를 로컬 버퍼(150, 150')에 복사하여 복사 데이터를 생성한다(S422). 단계 S421 및 S422에서 원본 데이터 및 복사 데이터는 특정 데이터 페이지만이 아닌 이와 관련된 로그 데이터를 포함할 수 있는 것은 전술한 바 있다.
복사 데이터 생성 후, 관리 설정부(120, 120')는 플러시 완료시까지 원본 데이터가 플러시되지 않도록 원본 데이터에 대해 희생 페이지 방지를 위한 값을 설정한다(S423). 또한, 관리 설정부(120, 120')는 복사 데이터의 플러시를 통해 원본 데이터와 실제 데이터베이스에 저장된 데이터 간의 동기화가 완료된다고 볼 수 있으므로 플러시 완료 전이라도 원본 데이터에 대해 더티 페이지가 아님을 나타내기 위한 값을 설정한다(S424). 단계 S422 내지 S424를 통해 플러시 처리에 필요한 준비는 모두 수행하였으므로, 원본 데이터에 대한 다른 스레드로부터의 쓰기 모드를 포함하는 접근을 허용하기 위해 관리 설정부(120, 120')는 원본 데이터의 뮤텍스를 해제한다(S425).
이후, 실제적으로 동기화를 위한 플러시가 플러시부(140, 140')에 의해 이루어지며(S426), 이 때 플러시부(140, 140')는 버퍼 캐시(160, 160')에 저장된 원본 데이터가 아닌 로컬 버퍼(150, 150')에 저장된 복사 데이터를 대상으로 플러시를 수행한다. 단계 S426에 의한 플러시가 수행되는 도중에도 다른 스레드에서 원본 데이터를 쓰기 모드로도 접근 가능한 것은 전술한 바 있다.
플러시부(140, 140')로부터의 관리 설정부(120, 120')에의 통지 또는 관리 설정부(120, 120')의 확인에 의해 플러시 수행이 완료된 것을 확인(S427)한 경우, 더 이상 원본 데이터가 희생 페이지로 허용되는 것을 막을 필요가 없다. 따라서, 관리 설정부(120, 120')는 다시 한 번 원본 데이터에 대해 뮤텍스를 설정(S428)하고, 원본 데이터에 대해 희생 페이지로 허용될 수 있도록 그 값을 설정(S429)하며, 설정에 따른 원본 데이터의 뮤텍스를 해제(S430)한다.
한편, 본 발명에 따른 실시예들은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(Floptical disk)와 같은 자기-광 매체(magneto-optical media) 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동되도록 구성될 수 있으며, 그 역도 마찬가지다.
이상과 같이 본 발명에서는 구체적인 구성 요소 등과 같은 특정 사항들과 한정된 실시예 및 도면에 의해 설명되었으나 이는 본 발명의 보다 전반적인 이해를 돕기 위해서 제공된 것일 뿐, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상적인 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.
따라서, 본 발명의 사상은 설명된 실시예에 국한되어 정해져서는 아니되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등하거나 등가적 변형이 있는 모든 것들은 본 발명 사상의 범주에 속한다고 할 것이다.
100 : 데이터베이스 서버
110, 110' : 선정부 120, 120' : 관리 설정부
130, 130' : 버퍼 복사부 140, 140' : 플러시부
150, 150' : 로컬 버퍼 160, 160' : 버퍼 캐시
170, 170' : 로그 캐시 180, 180' : LRU 리스트
190: 더티 페이지 리스트 195 : 더티 페이지 리스트 관리부
200 : 데이터베이스 300 : 단말장치
400 : 통신 네트워크

Claims (17)

  1. 데이터베이스에 저장된 데이터 페이지의 적어도 일부를 저장하고 있는 버퍼 캐시;
    상기 버퍼 캐시 내에 저장된 데이터 페이지들 중 적어도 일부가 최종 사용 시점을 기준으로 정렬된 LRU(Least Recently Used) 리스트; 및
    상기 버퍼 캐시에 대한 희생 페이지 선정 요청시, 상기 LRU 리스트에 정렬된 데이터 페이지들 중 상기 데이터베이스와 동기화되었는지 여부에 기초하여 희생 페이지를 선정하는 선정부를 포함하는, 데이터베이스 관리 장치.
  2. 청구항 1에 있어서, 상기 선정부는,
    상기 LRU 리스트에서 가장 오래 전에 사용된 데이터 페이지부터 사용된 순서에 따라 제1 위치까지를 탐색하여 이 중 상기 데이터베이스에 동기화된 데이터 페이지가 존재하는 경우, 해당 데이터 페이지를 상기 희생 페이지로 선정하는, 데이터베이스 관리 장치.
  3. 청구항 2에 있어서, 상기 선정부는,
    상기 LRU 리스트가 복수 개인 경우,
    상기 복수 개의 LRU 리스트 중 상기 희생 페이지를 선정할 LRU 리스트를 더 선택하며, 상기 탐색 결과 동기화된 데이터 페이지가 존재하지 않는 경우, 다음 LRU 리스트로 이동하여 다시 탐색을 진행하는, 데이터베이스 관리 장치.
  4. 청구항 2에 있어서, 상기 제1 위치는 고정된 위치 또는 상황에 따라 가변적으로 조절되는 위치인, 데이터베이스 관리 장치.
  5. 청구항 2에 있어서,
    상기 버퍼 캐시 내에 저장된 데이터 페이지들 중 상기 데이터베이스와 동기화되지 않은 데이터 페이지의 적어도 일부를 플러시하는 플러시부를 더 포함하는, 데이터베이스 관리 장치.
  6. 청구항 5에 있어서, 상기 선정부는,
    상기 제1 위치까지를 탐색하여 이 중 상기 데이터베이스에 동기화된 데이터 페이지가 존재하지 않는 경우, 처음부터 다시 탐색하거나 또는 상기 버퍼 캐시에 대한 플러시를 처리하도록 상기 플러시부에 요청하는, 데이터베이스 관리 장치.
  7. 청구항 5에 있어서, 상기 데이터베이스 관리 장치는,
    상기 LRU 리스트에 정렬된 데이터 페이지들 중 상기 데이터베이스와 동기화 되어 있지 않은 데이터 페이지 중 적어도 일부에 대한 정보를 저장하고 있는 더티 페이지 리스트, 및
    상기 더티 페이지 리스트가 디스크 상의 물리적인 위치 순서에 기초하여 순차적으로 정렬되도록 관리하는 더티 페이지 리스트 관리부를 더 포함하고,
    상기 플러시부는, 상기 정렬된 더티 페이지 리스트의 순서에 기초하여 플러시할 데이터 페이지를 선택하는,
    데이터베이스 관리 장치.
  8. 청구항 7에 있어서, 상기 플러시부는,
    플러시할 데이터 페이지를 선택할 때, 대응되는 로그가 상기 데이터베이스에기록되지 않은 데이터 페이지는 선택에서 제외하는, 데이터베이스 관리 장치.
  9. 청구항 5에 있어서, 상기 플러시부는,
    상기 LRU 리스트에 포함된 데이터 페이지들 중 상기 데이터베이스와 동기화되지 않은 데이터 페이지들을 이용하여 후보 리스트를 생성하고, 상기 후보 리스트를 디스크 상의 물리적인 위치 순서에 기초하여 정렬하며, 상기 정렬된 후보 리스트의 적어도 일부를 순차적으로 플러시하는, 데이터베이스 관리 장치.
  10. 청구항 9에 있어서, 상기 플러시부는,
    상기 데이터베이스와 동기화되지 않은 데이터 페이지들 중 로그를 기록할 필요가 없는 데이터 페이지들만 선택적으로 이용하여 상기 후보 리스트를 생성하는, 데이터베이스 관리 장치.
  11. 청구항 5에 있어서, 상기 데이터베이스 관리 장치는,
    상기 버퍼 캐시 내에 저장된 데이터 페이지들 중 상기 데이터베이스와 동기화되지 않은 데이터 페이지의 적어도 일부인 원본 데이터를 저장하기 위한 로컬 버퍼;
    상기 버퍼 캐시 내의 상기 원본 데이터를 상기 로컬 버퍼에 복사하는 버퍼 복사부; 및
    상기 플러시부에 의해 상기 로컬 버퍼에 복사된 데이터가 플러시되는 동안 상기 버퍼 캐시 내의 원본 데이터에 플러시가 발생하지 않도록 관리 설정하는 관리 설정부를 더 포함하는, 데이터베이스 관리 장치.
  12. 데이터베이스의 성능을 향상하기 위한 장치에서 수행되는 각 단계가,
    버퍼 캐시에 대한 희생 페이지 선정 요청시, LRU(Least Recently Used) 리스트에 정렬된 데이터 페이지들 중 상기 데이터베이스와 동기화된 데이터 페이지가 존재하는지 판단하는 단계; 및
    상기 판단 결과에 기초하여 희생 페이지를 선정하는 단계를 포함하며,
    상기 버퍼 캐시는 상기 데이터베이스에 저장된 데이터 페이지의 적어도 일부를 저장하고 있고,
    상기 LRU 리스트는 상기 버퍼 캐시 내에 저장된 데이터 페이지들 중 적어도 일부가 최종 사용 시점을 기준으로 정렬된, 데이터베이스 관리 방법.
  13. 청구항 12에 있어서, 상기 데이터베이스와 동기화된 데이터 페이지가 존재하는지 판단하는 단계는 상기 LRU 리스트에서 가장 오래 전에 사용된 데이터 페이지부터 사용된 순서에 따라 제1 위치까지를 탐색하고,
    상기 희생 페이지를 선정하는 단계는 상기 동기화된 데이터 페이지가 존재하는 경우 해당 데이터 페이지를 상기 희생 페이지로 선정하는, 데이터베이스 관리 방법.
  14. 청구항 13에 있어서,
    상기 버퍼 캐시 내에 저장된 데이터 페이지들 중 상기 데이터베이스와 동기화되지 않은 데이터 페이지의 적어도 일부를 플러시하는 단계를 더 포함하는, 데이터베이스 관리 방법.
  15. 청구항 14에 있어서, 상기 플러시하는 단계는,
    더티 페이지 리스트의 순서에 기초하여 플러시할 데이터 페이지를 선택하는 단계를 포함하고,
    상기 더티 페이지 리스트는 상기 LRU 리스트에 정렬된 데이터 페이지들 중 상기 데이터베이스와 동기화 되어 있지 않은 데이터 페이지 중 적어도 일부에 대한 정보가 디스크 상의 물리적인 위치 순서에 기초하여 순차적으로 정렬된, 데이터베이스 관리 방법.
  16. 청구항 14에 있어서, 상기 플러시하는 단계는,
    상기 LRU 리스트의 제2 위치까지를 대상으로 상기 데이터베이스와 동기화되지 않은 데이터 페이지들을 이용하여 후보 리스트를 생성하는 단계,
    상기 후보 리스트를 디스크 상의 물리적인 위치 순서에 기초하여 정렬하는 단계, 및
    상기 정렬된 후보 리스트의 적어도 일부를 순차적으로 플러시하는 단계를 포함하는, 데이터베이스 관리 방법.
  17. 청구항 12 내지 16 중 어느 한 항에 기재된 방법의 각 단계를 컴퓨터상에서 수행하기 위한 프로그램을 기록한 컴퓨터 판독 가능한 기록매체.
KR1020120044472A 2012-04-27 2012-04-27 데이터베이스 관리 방법 및 장치 KR101295210B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020120044472A KR101295210B1 (ko) 2012-04-27 2012-04-27 데이터베이스 관리 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120044472A KR101295210B1 (ko) 2012-04-27 2012-04-27 데이터베이스 관리 방법 및 장치

Publications (1)

Publication Number Publication Date
KR101295210B1 true KR101295210B1 (ko) 2013-08-12

Family

ID=49220262

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120044472A KR101295210B1 (ko) 2012-04-27 2012-04-27 데이터베이스 관리 방법 및 장치

Country Status (1)

Country Link
KR (1) KR101295210B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3267329A1 (en) 2016-07-05 2018-01-10 Realtimetech Co., Ltd. Data processing method having structure of cache index specified to transaction in mobile environment dbms
KR20190113430A (ko) * 2018-03-28 2019-10-08 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000035912A (ja) 1998-05-13 2000-02-02 Hitachi Ltd ディレクトリ・サーバ
KR100787856B1 (ko) 2006-11-29 2007-12-27 한양대학교 산학협력단 플래시 메모리 저장장치의 페이지 교체 방법
KR100998212B1 (ko) 2010-06-09 2010-12-03 엘아이지넥스원 주식회사 Nand 플래시 메모리의 버퍼 접근 방법
KR20120035070A (ko) * 2010-10-04 2012-04-13 주식회사 알티베이스 에스에스디를 확장 버퍼로 이용한 버퍼 캐쉬 관리 방법 및 에스에스디를 확장 버퍼로 사용한 장치

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000035912A (ja) 1998-05-13 2000-02-02 Hitachi Ltd ディレクトリ・サーバ
KR100787856B1 (ko) 2006-11-29 2007-12-27 한양대학교 산학협력단 플래시 메모리 저장장치의 페이지 교체 방법
KR100998212B1 (ko) 2010-06-09 2010-12-03 엘아이지넥스원 주식회사 Nand 플래시 메모리의 버퍼 접근 방법
KR20120035070A (ko) * 2010-10-04 2012-04-13 주식회사 알티베이스 에스에스디를 확장 버퍼로 이용한 버퍼 캐쉬 관리 방법 및 에스에스디를 확장 버퍼로 사용한 장치

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3267329A1 (en) 2016-07-05 2018-01-10 Realtimetech Co., Ltd. Data processing method having structure of cache index specified to transaction in mobile environment dbms
KR20190113430A (ko) * 2018-03-28 2019-10-08 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
CN110321070A (zh) * 2018-03-28 2019-10-11 爱思开海力士有限公司 存储器控制器及其操作方法
CN110321070B (zh) * 2018-03-28 2023-11-03 爱思开海力士有限公司 存储器控制器及其操作方法

Similar Documents

Publication Publication Date Title
US11288252B2 (en) Transactional key-value store
US11281377B2 (en) Method and apparatus for managing storage system
RU2672719C2 (ru) Журналируемое хранение без блокировок для нескольких способов доступа
CN106575297B (zh) 使用盲更新操作的高吞吐量数据修改
US11023453B2 (en) Hash index
JP6304406B2 (ja) ストレージ装置、プログラム、情報処理方法
US9665304B2 (en) Storage system with fast snapshot tree search
US10242050B2 (en) Database caching in a database system
US5551003A (en) System for managing log structured array (LSA) of DASDS by managing segment space availability and reclaiming regions of segments using garbage collection procedure
US7194589B2 (en) Reducing disk IO by full-cache write-merging
US9779027B2 (en) Apparatus, system and method for managing a level-two cache of a storage appliance
US20150039837A1 (en) System and method for tiered caching and storage allocation
US20180011892A1 (en) Foster twin data structure
US20140115244A1 (en) Apparatus, system and method for providing a persistent level-two cache
US11100083B2 (en) Read only bufferpool
KR20080086875A (ko) 데이터베이스를 관리하기 위한 컴퓨터 구현 방법, 및데이터베이스에 지향되는 트랜잭션들을 관리하기 위한컴퓨터 구현 방법
US9189408B1 (en) System and method of offline annotation of future accesses for improving performance of backup storage system
KR20090091746A (ko) 라이트백 캐시 유닛을 사용하여 데이터를 관리하는 시스템, 방법 및 컴퓨터 프로그램 제품
JP4189342B2 (ja) ストレージ装置、ストレージコントローラ及びライトバックキャッシュ制御方法
KR101295210B1 (ko) 데이터베이스 관리 방법 및 장치
An et al. Your read is our priority in flash storage
Sharma et al. SGA Dynamic Parameters: The Core Components of Automated Database Tuning
Kissinger et al. A high-throughput in-memory index, durable on flash-based SSD: insights into the winning solution of the SIGMOD programming contest 2011
KR20120039166A (ko) 데이터 페이지들에 대해 무효화 기회를 부여하는 방법 및 이를 위한 낸드 플래시 메모리 시스템
WO2012143980A1 (en) Storage system and its data processing method

Legal Events

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

Payment date: 20160725

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170704

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190701

Year of fee payment: 7