KR100507782B1 - 데이터베이스 관리시스템 및 그 시스템에서 시스템테이블에 대한 동시성 제어 방법 - Google Patents

데이터베이스 관리시스템 및 그 시스템에서 시스템테이블에 대한 동시성 제어 방법 Download PDF

Info

Publication number
KR100507782B1
KR100507782B1 KR10-2003-0087748A KR20030087748A KR100507782B1 KR 100507782 B1 KR100507782 B1 KR 100507782B1 KR 20030087748 A KR20030087748 A KR 20030087748A KR 100507782 B1 KR100507782 B1 KR 100507782B1
Authority
KR
South Korea
Prior art keywords
system table
entry
record
transaction
lock
Prior art date
Application number
KR10-2003-0087748A
Other languages
English (en)
Other versions
KR20050054380A (ko
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 KR10-2003-0087748A priority Critical patent/KR100507782B1/ko
Publication of KR20050054380A publication Critical patent/KR20050054380A/ko
Application granted granted Critical
Publication of KR100507782B1 publication Critical patent/KR100507782B1/ko

Links

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/23Updating
    • G06F16/2308Concurrency control
    • G06F16/2336Pessimistic concurrency control approaches, e.g. locking or multiple versions without time stamps
    • G06F16/2343Locking methods, e.g. distributed locking or locking implementation details
    • 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
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • 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/23Updating
    • G06F16/2308Concurrency control
    • 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/2455Query execution

Landscapes

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

Abstract

본 발명은 시스템 테이블을 질의 처리기 수준에서 동시성 제어하는 데이터베이스 관리 시스템 및 그 시스템에서 시스템 테이블에 대한 동시성 제어 방법에 관한 것이다.
본 발명의 데이터베이스 관리 시스템은, 시스템 테이블과 사용자 테이블이 물리적으로 저장되는 디스크; 시스템 테이블과 사용자 테이블을 메인 메모리에 적재하여 버퍼 관리를 수행하는 버퍼관리모듈과, 사용자 테이블에 대한 일관성과 동시성을 지원하는 제 1 잠금관리모듈을 포함하는 저장 관리기; 및 저장 관리기로부터의 디스크 구조 형식의 시스템 테이블 정보를 메모리 구조로 변환하여 관리하고 각 응용프로그램 트랜잭션의 요구에 따라 해당 시스템 테이블 정보를 제공하는 시스템 테이블 관리모듈과, 시스템 테이블 정보에 대한 동시성 및 일관성을 지원하는 제 2 잠금관리모듈을 포함하는 질의 처리기;로 구성된다.

Description

데이터베이스 관리시스템 및 그 시스템에서 시스템 테이블에 대한 동시성 제어 방법{Database management system and the method of controlling consistency of system table in DBMS}
본 발명은 데이터베이스 시스템에서 시스템 테이블에 대한 동시성 제어 방법에 관한 것으로, 보다 상세히는 데이터 종류 중에서 접근 빈도와 트랜잭션 공유도가 매우 높고 접근 형식이 일정한 시스템 테이블을 질의 처리기 수준에서 동시성 제어하는 데이터베이스 관리시스템 및 그 시스템에서 시스템 테이블에 대한 동시성 제어 방법에 관한 것이다.
일반적으로, 데이터베이스 관리 시스템은 같은 데이터(테이블 또는 레코드)를 동시에 다중 사용자(트랜잭션)들이 접근 할 때, 데이터 일관성을 유지하기 위하여 데이터 공유를 위한 버퍼 관리와 동시성 제어를 위한 잠금 관리를 저장 관리기 수준에서 지원하고 있다.
도 1은 다중 트랜잭션이 수행되는 과정에서 모든 테이블들에 대한 동시성 제어가 저장 관리기에서 처리되는 종래의 데이터베이스 관리 시스템의 구조 예이다.
도 1을 참조하면, 데이터베이스 관리시스템은 트랜잭션을 생성하는 질의처리기(110)와, 버퍼관리모듈(122)과 잠금관리모듈(124)을 포함하는 저장관리기(120), 및 시스템 테이블(132)과 사용자 테이블(134)을 포함하는 디스크(130)로 이루어져 응용 프로그램들(101-1~101-n)의 요구를 처리한다.
응용 프로그램(101-1~101-n)은 사용자가 요구한 질의 처리를 위하여 트랜잭션(112-1~112-n)을 발생시키고, 트랜잭션(112-1~112-n)은 사용자가 요구한 사용자 테이블(134)에 접근하기 위하여, 먼저 사용자 테이블 접근을 위한 정보를 얻기 위해 시스템 테이블(132)을 먼저 접근한다. 시스템 테이블에 접근하는 절차는 먼저 저장 관리기의 잠금관리모듈(124)로부터 잠금 권한을 획득한 다음, 시스템 테이블(132)이 버퍼 관리 모듈(122)에서 관리하는 공간(이하, 버퍼 공간이라 함)에 있는지를 찾는다. 시스템 테이블(132)이 버퍼 공간에 있는 경우에는 그 내용을 질의 처리기(110)에서 사용할 수 있도록 디스크 구조 형식인 레코드를 메모리 구조 형식으로 바꾼 다음 저장하고, 그 내용을 읽어서 궁극적으로 찾고자 하는 사용자 테이블 정보를 얻는다. 찾고자 하는 시스템 테이블(132)이 버퍼 공간에 없는 경우에는 디스크(130)로부터 버퍼 공간으로 읽은 다음, 앞서 언급한 실행 순서를 따른다.
그러므로 시스템 테이블은 사용자 테이블보다는 접근 빈도가 매우 높고, 대부분의 트랜잭션에서 공유되는 특성과 읽기 연산이 거의 대부분이다. 그러나 버퍼 관리 모듈(122)은 시스템 테이블과 사용자 테이블을 동등하게 버퍼 교체 알고리즘을 적용하기 때문에 시스템 테이블을 찾을 때도 버퍼 공간에 없는 경우가 발생할 수 있으며, 이에 따라 디스크 입출력에 소요되는 시간 비중이 상대적으로 매우 높아지는 문제점이 있다.
또한 트랜잭션들(112-1~112-n)의 시스템 테이블 공유가 매우 높음에도 불구하고, 트랜잭션마다 관리되는 시스템 테이블 정보를 질의 처리기(110) 수준에서 공유하지 않음에 따라 각 트랜잭션들(112-1~112-n)은 서로 같은 시스템 테이블을 접근하더라도 트랜잭션 별로 중복해서 질의 처리기(110)로 가져옴과 동시에 매번 디스크 형식 구조를 메모리 구조 형식으로 변환해야 하는 문제점이 있다.
본 발명은 상술한 종래의 문제점을 해결하기 위한 것으로서, 본 발명의 목적은 시스템 테이블들에 대해서는 질의 처리기에서, 즉 메모리 구조 형식 자체에서 동시성 제어 기법을 적용시켜 트랜잭션들이 시스템 테이블 정보를 질의 처리기 수준에서 공유할 수 있도록 하여 동시성 성능을 높이고, 시스템 테이블을 메모리 구조 형식으로 변환하는 연산을 한번으로 줄이도록 개선한 데이터베이스 관리 시스템 및 그 시스템에서 시스템 테이블에 대한 동시성 제어 방법을 제공하는데 있다.
또한, 본 발명의 다른 목적은 한번 읽은 시스템 테이블 정보는 데이터베이스 관리 시스템을 다운시키기 전까지 항상 보관하도록 함에 따라 디스크 입출력은 단지 한번 발생하도록 함으로 해서 성능을 개선할 수 있는 데이터베이스 관리시스템 및 그 시스템에서 시스템 테이블에 대한 동시성 제어 방법을 제공하는 것이다.
상기와 같은 목적을 달성하기 위하여 본 발명의 데이터베이스 관리 시스템은, 시스템 테이블과 사용자 테이블이 물리적으로 저장되는 디스크; 상기 디스크로부터의 시스템 테이블과 사용자 테이블을 메인 메모리에 적재하여 버퍼 관리를 수행하는 버퍼관리모듈과, 사용자 테이블에 대한 일관성과 동시성을 지원하는 제 1 잠금관리모듈을 포함하는 저장 관리기; 및 상기 저장 관리기로부터의 디스크 구조 형식의 시스템 테이블 정보를 메모리 구조로 변환하여 관리하고 각 응용프로그램 트랜잭션의 요구에 따라 해당 시스템 테이블 정보를 제공하는 시스템 테이블 관리모듈과, 시스템 테이블 정보에 대한 동시성 및 일관성을 지원하는 제 2 잠금관리모듈을 포함하여 각 응용프로그램의 질의에 응답하는 질의 처리기;로 구성된다.
또한, 상기와 같은 목적을 달성하기 위하여 본 발명의 데이터베이스 시스템에서 시스템 테이블에 대한 동시성 제어 방법은, 사용자 테이블 식별자 값을 통해 해쉬 엔트리를 결정하고, 해당 엔트리의 래치를 획득하여 다른 트랜잭션의 동시 접근을 방지하는 단계; 그 엔트리에서 해당 레코드가 탐색됨에 따라, 읽기 잠금권한을 획득한 후 레코드에서 시스템 테이블 정보를 획득하는 단계; 및 상기 획득된 시스템 테이블 정보에 따라 디스크에서 필요한 사용자 테이블 정보를 읽어 온 후, 상기 엔트리 래치를 반납하는 단계;를 수행하여 트랜잭션 요구에 대한 질의 처리기 수준의 시스템 테이블 정보를 탐색하는 것을 특징으로 한다.
이하, 본 발명에 따른 실시예를 첨부한 도면을 참조하여 상세히 설명하기로 한다.
도 2는 본 발명에 따른 질의 처리기에서의 시스템 테이블에 대한 동시성 제어 방법이 적용되는 데이터베이스 관리시스템의 구성도이다.
도 2를 참조하면, 데이터베이스 관리시스템은 잠금관리모듈(214)과 시스템 테이블 관리모듈(216)을 포함하고 트랜잭션(212-1~212-n)을 생성하는 질의 처리기(210)와, 버퍼관리모듈(224)과 잠금관리모듈(222)을 포함하는 저장관리기(220), 및 시스템 테이블(232)과 사용자 테이블(234)을 저장하고 있는 디스크(230)로 이루어져 응용 프로그램들(201-2~101-n)의 요구(질의)를 처리한다.
즉, 데이터베이스 관리 시스템을 사용하는 다양한 응용 프로그램(201-1~201-n)이 존재하고, 이들로부터 요청되어지는 질의 수행, 즉 트랜잭션(212-1~212-n)은 각 응용 프로그램에 따라 별도로 존재한다. 다중 트랜잭션들(212-1~212-n)은 질의를 수행하는 과정에서 필요한 시스템 테이블 정보를 시스템 테이블 관리 모듈(216)로부터 얻는다. 시스템 테이블 관리 모듈(216)은 저장 관리기의 버퍼 관리 모듈(224)을 통해 얻어진 디스크 구조 형식의 시스템 테이블 정보를 메모리 구조로 변환하며, 이들 정보를 다중 트랜잭션(212-1~212-n)이 공유할 수 있도록 질의 처리기 부분의 잠금 관리 모듈(214)을 통해 일관성과 동시성을 지원한다. 저장 관리기의 버퍼 모듈(224)은 디스크 구조 형태의 시스템 테이블과 일반 데이터(사용자 테이블)를 메인 메모리에 적재하여 버퍼 관리를 수행하며, 저장 관리기 부분의 잠금 관리 모듈(222)은 일반 데이터 파일의 정보에 한하여 일관성 및 동시성의 유지를 담당한다. 디스크(230)는 시스템 테이블(232)과 일반 데이터 파일(234)이 물리적으로 저장되어 있다. 그리고 한번 시스템 테이블 관리 모듈(216)로 적재된 정보는 해당 사용자 파일이 삭제되지 않는 한, 시스템 테이블 관리 모듈(216)에 유지되도록 한다.
도 3 은 본 발명에 따라 시스템 테이블 관리모듈에서 관리하는 자료 구조의 예이다. 시스템 테이블 관리 모듈(216)은 시스템 테이블(232)을 종류 별로 모두 관리하는데, 도 3에서 예시한 테이블 종류는 테이블 정보를 나타내는 시스템 테이블(310)과 인덱스 정보를 나타내는 시스템 테이블들(320)에 대해서만 예를 들었다. 시스템 테이블 리스트내의 각 엔트리에 래치(311,312)가 존재하고, 현재 사용중인 시스템 테이블 노드(레코드)들이 링크되어 있다.
도 3을 참조하면, 테이블 정보를 나타내는 시스템 테이블(310)의 경우, 해쉬 테이블로 관리되는 시스템 테이블 리스트와 똑 같은 해쉬 값들로 리스트에 연결된 시스템 테이블 레코드들로 구성된다. 참조번호 313은 "employee"라는 사용자 테이블에 대한 정보를 저장하는 시스템 테이블 레코드이다. 똑 같은 해쉬 값을 가지는 레코드들(314)은 링크드 리스트(linked list)로 운영된다.
데이터베이스 관리 시스템이 처음 기동될 때는, 시스템 테이블 관리를 위해 시스템 테이블 리스트들만 만들고, 시스템 테이블 리스트의 엔트리 개수는 각 시스템 테이블에 속한 레코드 개수(m)만큼 만들고, 해쉬 함수는 사용자 테이블 식별자 값에 m를 나눈 나머지 값을 해쉬 값으로 사용하여, 충돌 현상이 최대한 발생하지 않도록 하였다. 참조번호 320은 인덱스 정보 테이블에 있는 레코드 개수가 m 개인 경우의 시스템 기동시 초기화된 모습을 나타내고 있다.
시스템 테이블 레코드를 시스템 테이블 리스트의 한 엔트리에 여러 트랜잭션들이 검색, 삭제, 삽입 연산을 동시에 수행하는 경우, 시스템 테이블 리스트와 연결된 레코드를 찾거나 연결 정보를 변경하고자 할 때는 참조번호 311, 312와 같이 래치를 사용하고, 실제 레코드 정보 자체를 획득하거나 변경하고자 할 때는 참조번호 315와 같은 잠금 기능을 이용하여 일관성 및 동시성을 지원한다.
도 4는 본 발명에 따라 사용자 테이블에 대한 정보가 데이터베이스 내에 있을 때, 해당되는 시스템 테이블의 레코드를 찾는 시스템 테이블 탐색 절차이다.
먼저, 트랜잭션으로부터 시스템 테이블에 대한 정보 요청이 들어오면, 사용자 테이블 식별자 값으로 해쉬 함수를 사용하여 해쉬 엔트리를 결정한다(401,402). 해쉬 엔트리가 결정되면 해당 엔트리의 래치(latch:311,312)를 획득함으로써, 다른 트랜잭션이 동시에 이 엔트리에 접근하는 것을 방지한다(403). 엔트리에 관한 래치을 획득하고 나면, 이 엔트리에 연결되어 있는 시스템 테이블 레코드를 탐색한다(404).
탐색 결과 해당 시스템 테이블 레코드가 발견되면, 테이블 정보를 획득하기 위하여 읽기 잠금 권한을 획득하는 과정을 거친다(405). 이는 도 7에서 자세히 설명한다. 획득이 완료된 이후에는 알고자 하는 정보를 읽어 간 다음, 해당 엔트리 래치(311,312)를 반납한다(409, 410).
만일, 해당 해쉬 엔트리에 레코드가 존재하지 않는 경우, 레코드 내용을 저장하기 위한 새로운 노드를 생성하여 엔트리에 추가시킨다(406). 시스템 테이블 정보를 획득하기 위하여 읽기 잠금 획득 과정을 거친 다음, 저장 관리기(220)로부터 시스템 테이블 레코드를 전달받는다(407). 이때 디스크 구조 형식의 레코드 정보를 질의 처리기(210)가 사용하는 메모리 구조 형식으로 변환하여 새로운 노드에 반영한다(408). 필요한 정보를 모두 읽어 간 다음, 해당 엔트리 래치(311,312)를 반납한다(409,410).
도 5는 본 발명에 따라 사용자 테이블을 삭제하는 경우, 사용자 테이블에 관련된 시스템 테이블 정보도 변경되어야 하며, 이에 대한 시스템 테이블 관리기의 동작 절차이다.
도 5를 참조하면, 사용자 테이블에 관련된 시스템 테이블 레코드가 시스템 테이블 관리 리스트(310)에 있는 지를 알기 위해서, 먼저 해쉬 엔트리를 선택하고, 래치를 획득한다(501,502).
해당 엔트리에서 시스템 테이블 레코드를 탐색한 다음, 시스템 테이블 레코드가 없는 경우에는 아직 접근하고 있는 트랜잭션이 없다는 의미이므로, 곧바로 저장 관리기(220)에서 해당 레코드 부분을 삭제하도록 한다(503,506).
해당 엔트리에서 레코드가 있는 경우에는 다른 트랜잭션이 현재 사용중일 가능성이 있으므로, 쓰기 잠금 권한을 획득한 이후(504), 해당 레코드 노드를 삭제한다(505). 레코드 노드 삭제가 끝난 이후에는 저장 관리기(220)에서 해당 레코드를 삭제하고(506), 엔트리의 래치를 반납한다(507). 레코드 노드 삭제 절차는 도 7에서 상세히 설명한다.
도 6은 본 발명에 따라 사용자 테이블을 새롭게 생성할 경우, 이에 대한 시스템 테이블 관리기의 동작 절차이다. 사용자 테이블에 관련된 레코드가 시스템 테이블 관리 리스트(310)에 있는 지를 알기 위해서, 먼저 해쉬 엔트리를 선택하고, 래치를 획득한다(601,602). 이어 해당 엔트리에서 시스템 테이블 레코드를 탐색한 다음, 레코드가 있는 경우에는 이미 똑 같은 테이블이 존재한다는 뜻이기 때문에 획득한 래치를 반납하고 오류로 반환하고 끝낸다(603~605).
해당 엔트리에서 시스템 테이블 레코드를 탐색하여 레코드가 없는 경우에는 저장 관리기(220)에서 사용자 테이블 생성 및 관련 시스템 테이블 정보도 변경한 다음, 질의 처리기(210)에서 관리하는 시스템 테이블 리스트(310)에 노드를 추가하고, 관련 시스템 테이블 정보를 저장한다(606,607). 이어 잠금 권한을 획득하고, 해당 엔트리의 래치를 반납한다(608.609). 획득한 잠금 권한은 트랜잭션이 끝날 때 반납된다. 사용자 테이블 구조 변경도 유사한 개념으로 처리된다.
도 7은 본 발명에 따라 잠금 획득을 위한 처리 과정을 도시한 흐름도이다.
도 7을 참조하면, 해쉬 엔트리의 래치을 획득한 상태에서 시스템 테이블 리스트 탐색을 통해 해당 테이블을 찾으면, 현재 테이블 노드에 걸려있는 읽기/쓰기 잠금 모드와 현 트랜잭션이 수행하고자 하는 잠금 모드를 비교하여 공유 가능 여부를 판단한다(701~703).
잠금 모드 종류는 '읽기 모드'와 '쓰기 모드'로 나누고, 읽기 모드끼리는 공유할 수 있지만, 쓰기 모드는 어떠한 다른 모드와도 공유할 수 없도록 한다. 공유가 가능한 경우에도 노드의 대기 리스트에 대기 중인 트랜잭션이 존재하는지를 검사한다.
만약, 공유가 가능하고 대기 중인 트랜잭션이 없다면 요구한 잠금 모드를 노드에 기록하고, 현재 접근한 트랜잭션 수 값에 1 증가시킴으로서 잠금을 획득한다(705).
만약, 대기 리스트에 트랜잭션이 존재하는 경우 또는 공유가 불가능한 경우에는 트랜잭션 식별자 값을 대기 리스트에 연결시키고(703), 엔트리의 래치를 반납한다(704). 그리고 해당 트랜잭션은 블록된다.
잠금을 획득한 트랜잭션 수행이 끝난 경우에는 대기 리스트에 있는 것 중에 첫 트랜잭션이 쓰기 모드로 기다리는 경우에는 첫 트랜잭션 하나만 깨우고, 읽기 모드로 기다리는 경우에는 기다리는 트랜잭션들 중에서 읽기 모드의 것을 모두 깨워서, 다시 잠금 획득 절차를 수행하도록 한다.
상술한 바와 같이 본 발명은 데이터베이스 관리 시스템의 질의 처리기 레벨에서 다중 트랜잭션들이 동시에 시스템 테이블을 접근할 수 있도록 함으로써 다음과 같은 효과가 있다.
첫째, 시스템 테이블은 접근하는 형식이 일정하기 때문에 일반적으로 파일 레벨, 레코드 레벨 모두 관리하는 것을 레코드 레벨만 관리하도록 함으로 해서 성능 개선을 얻을 수 있다.
둘째, 일반적으로 시스템 테이블 공유를 버퍼 공간에서 지원함으로 해서 항상 찾고자 하는 테이블 정보가 메모리에 없을 수도 있었지만, 본 발명에서는 한번 읽은 테이블 정보는 항상 메모리에 관리함으로 해서 검색 성능을 높일 수 있다.
셋째, 기존 방식은 트랜잭션마다 처음 접근하는 시스템 테이블 정보는 반드시 디스크 구조 형식에서 메모리 구조 형식로의 변환 과정을 매번 수행하였지만, 본 발명에서는 데이터베이스 관리 시스템 차원에서 시스템 테이블 정보는 한번만 구조 형식을 변환하도록 함으로 해서 시스템 테이블 정보 접근 속도를 높일 수 있다.
도 1은 다중 트랜잭션이 수행되는 과정에서 모든 테이블들에 대한 동시성 제어가 저장 관리기에서 처리되는 종래의 데이터베이스 관리 시스템의 구조를 도시한 도면.
도 2는 본 발명에 따른 다중 트랜잭션이 수행되는 과정에서 시스템 테이블들에 대해서만 질의 처리기에서 관리되는 데이터베이스 관리 시스템의 구조를 도시한 도면.
도 3은 본 발명에서 제공하는 시스템 테이블 정보를 관리하기 위해 필요로 하는 자료 구조의 예.
도 4는 본 발명에서 제공하는 시스템 테이블 관리 모듈에서 특정 레코드를 탐색하는 과정을 도시한 흐름도.
도 5는 본 발명에 따른 시스템 테이블 관리 자료 구조에서 사용자 파일 삭제로 인해 시스템 테이블의 한 레코드를 삭제하는 과정을 도시한 흐름도.
도 6은 본 발명에 따라 시스템 테이블 관리 자료 구조에서 사용자 파일 생성으로 인해 시스템 테이블의 한 레코드를 삽입하는 과정을 도시한 흐름도.
도 7은 본 발명에 따른 선택된 레코드에 잠금을 획득하는 과정을 도시한 흐름도.
<도면의 주요 부분에 대한 부호의 설명>
201-1~201-n: 응용 프로그램 210: 질의 처리기
212-1~212-n: 트랜잭션 214: 잠금관리모듈
216: 시스템 테이블 관리모듈 220: 저장 관리기
222: 잠금관리모듈 224: 버퍼관리모듈
230: 디스크 232: 시스템 테이블
234: 사용자 테이블

Claims (17)

  1. 시스템 테이블과 사용자 테이블이 물리적으로 저장되는 디스크;
    상기 디스크로부터의 시스템 테이블과 사용자 테이블을 메인 메모리에 적재하여 버퍼 관리를 수행하는 버퍼관리모듈과, 사용자 테이블에 대한 일관성과 동시성을 지원하는 제 1 잠금관리모듈을 포함하는 저장 관리기; 및
    상기 저장 관리기로부터의 디스크 구조 형식의 시스템 테이블 정보를 메모리 구조로 변환하여 관리하고 각 응용프로그램 트랜잭션의 요구에 따라 해당 시스템 테이블 정보를 제공하는 시스템 테이블 관리모듈과, 시스템 테이블 정보에 대한 동시성 및 일관성을 지원하는 제 2 잠금관리모듈을 포함하여 각 응용프로그램의 질의에 응답하는 질의 처리기;로 구성되는 것을 특징으로 하는 데이터베이스 관리시스템.
  2. 제 1항에 있어서, 상기 시스템 테이블 관리모듈은,
    시스템 테이블 정보가 메인 메모리에 일단 적재되면, 시스템이 다운되거나 해당 사용자 테이블이 삭제되지 않는 한 메인 메모리상에 계속 유지시키는 것을 특징으로 하는 데이터베이스 관리시스템.
  3. 제 1항에 있어서, 상기 시스템 테이블 관리모듈은,
    시스템 테이블 정보의 관리 구조로서, 시스템 테이블의 종류별 시스템 테이블 리스트와 각 리스트내에 래치를 갖는 다수의 엔트리를 구성한 후, 각 리스트에 동일 해쉬값을 갖는 레코드들을 링크시킴으로써 시스템 테이블 정보를 관리하는 것을 특징으로 하는 데이터베이스 관리시스템.
  4. 제 3항에 있어서, 상기 시스템 테이블 관리모듈은,
    시스템 테이블 리스트의 엔트리 개수는 각 시스템 테이블에 속한 레코드 개수만큼 만들고, 해쉬 함수는 사용자 테이블 식별자 값에 레코드 개수를 나눈 나머지 값을 해쉬값으로 사용하는 것을 특징으로 하는 데이터베이스 관리시스템.
  5. 제 3항 또는 제 4항에 있어서, 상기 시스템 테이블 관리모듈은, 시스템 테이블 리스트의 한 엔트리에 여러 트랜잭션들이 검색, 삭제, 삽입 연산을 동시에 수행하는 경우,
    해당 레코드를 검색하거나 링크 정보를 변경하고자 할 때는 그 엔트리의 래치를 사용하고, 실제 레코드 정보 자체를 획득하거나 변경하고자 할 때는 잠금 기능을 이용하여 일관성 및 동시성을 지원하는 것을 특징으로 하는 데이터베이스 관리시스템.
  6. 제 3항 또는 제 4항에 있어서, 상기 시스템 테이블 관리모듈은, 응용프로그램 트랜잭션에 의해 요구되는 시스템 테이블의 레코드를 탐색하기 위해,
    (a) 사용자 테이블 식별자 값으로 해쉬 엔트리를 결정하고, 해당 엔트리의 래치를 획득하여 다른 트랜잭션의 엔트리 접근을 방지하는 단계;
    (b) 그 엔트리에서 해당 레코드가 탐색됨에 따라, 상기 제 2 잠금관리모듈을 통해 읽기 잠금권한을 획득한 후 시스템 테이블 정보를 획득하는 단계; 및
    (c) 상기 획득된 시스템 테이블 정보에 따라 상기 저장 관리기를 통해 필요한 사용자 테이블 정보를 읽어 온 후, 상기 엔트리 래치를 반납하는 단계;를 수행하는 것을 특징으로 하는 데이터베이스 관리시스템.
  7. 제 6항에 있어서, 상기 시스템 테이블 관리모듈은, 상기 (b)단계에서 상기 결정된 해쉬 엔트리에 해당 레코드가 존재하지 않는 경우,
    새로운 레코드 노드를 생성하여 그 해쉬 엔트리에 추가하는 단계; 및
    읽기 잠금권한을 획득한 후 상기 저장 관리기로부터 시스템 테이블 정보를 전달받아 메모리 구조 형식으로 변환하여 상기 새로운 레코드 노드에 반영하는 단계;를 수행하는 것을 특징으로 하는 데이터베이스 관리시스템.
  8. 제 3항 또는 제 4항에 있어서, 상기 시스템 테이블 관리모듈은, 트랜잭션으로부터 상기 디스크내 사용자 테이블에 대한 삭제 요청이 있을 경우,
    그 사용자 테이블 식별자 값을 통해 해쉬 엔트리를 결정하고, 해당 엔트리의 래치를 획득하는 단계;
    해당 엔트리에서 관련된 시스템 테이블 레코드를 탐색하는 단계;
    관련 시스템 테이블 레코드가 탐색될 경우, 상기 제 2 잠금관리모듈을 통해 쓰기 잠금권한을 획득하여 해당 레코드 노드를 삭제하는 단계; 및
    상기 저장 관리기를 통해 버퍼 수준의 해당 레코드 및 디스크내의 해당 사용자 테이블을 삭제한 후, 상기 엔트리 래치를 반납하는 단계;를 수행하는 것을 특징으로 하는 데이터베이스 관리시스템.
  9. 제 3항 또는 제 4항에 있어서, 상기 시스템 테이블 관리모듈은, 상기 디스크에 새로운 사용자 테이블을 생성하는 경우,
    사용자 테이블 식별자 값을 통해 해쉬 엔트리를 결정하고, 해당 엔트리의 래치를 획득하는 단계;
    상기 해쉬 엔트리에서 해당되는 시스템 테이블 레코드가 존재하는지 탐색하는 단계;
    해당 시스템 테이블 레코드가 존재하는 경우, 상기 엔트리 래치를 반납하고 오류로 처리하는 단계; 및
    해당 시스템 테이블 레코드가 없을 경우, 상기 저장 관리기를 통해 사용자 테이블을 생성하고 관련 시스템 테이블 정보를 변경한 후, 상기 해쉬 엔트리에 새로운 레코드 노드를 생성 추가하여 관련 시스템 테이블 정보를 저장하고, 잠금권한을 획득하여 해당 트랜잭션을 수행한 후 상기 엔트리 래치를 반납하는 단계;를 수행하는 것을 특징으로 하는 데이터베이스 관리시스템.
  10. 제 3항 또는 제 4항에 있어서, 상기 제 2 잠금관리모듈은,
    대상 테이블 레코드 노드에 걸려있는 잠금모드와 현 트랜잭션이 수행하고자 하는 잠금 모드를 비교하여 공유 가능 여부를 판단하고, 대기 중인 트랜잭션이 존재하는지를 검사하는 단계;
    공유 가능하고 대기 중인 트랜잭션이 없을 경우, 요구한 잠금 모드를 노드에 기록하고, 그 접근 트랜잭션 수를 1증가시키고 잠금을 획득하는 단계; 및
    공유 불가하거나 대기 중인 트랜잭션이 존재하는 경우, 또는 공유가 불가능한 경우에는 그 트랜잭션 식별자 값을 대기 리스트에 포함시킨 후, 엔트리 래치를 반납하여 해당 트랜잭션을 블록하는 단계;를 수행하는 것을 특징으로 하는 데이터베이스 관리시스템.
  11. 제 3항 또는 제 4항에 있어서, 상기 제 2 잠금관리모듈은,
    잠금을 획득한 트랜잭션 수행이 끝나면, 대기 리스트에 있는 것 중에 첫 트랜잭션이 쓰기 모드로 기다리는 경우에는 첫 트랜잭션 하나만 깨우고, 읽기 모드로 기다리는 경우에는 기다리는 트랜잭션들 중에서 읽기 모드의 것을 모두 깨워서 다시 잠금 획득 절차를 수행하도록 하는 것을 특징으로 하는 데이터베이스 관리 시스템.
  12. 질의 처리기, 저장 관리기, 및 디스크를 포함하는 데이터베이스 시스템에서 응용프로그램 트랜잭션들에 의해 요청되는 시스템 테이블에 대한 동시성을 제어하는 방법에 있어서,
    (a) 사용자 테이블 식별자 값을 통해 해쉬 엔트리를 결정하고, 해당 엔트리의 래치를 획득하여 다른 트랜잭션의 동시 접근을 방지하는 단계;
    (b) 그 엔트리에서 해당 레코드가 탐색됨에 따라, 읽기 잠금권한을 획득한 후 레코드에서 시스템 테이블 정보를 획득하는 단계; 및
    (c) 상기 획득된 시스템 테이블 정보에 따라 디스크에서 필요한 사용자 테이블 정보를 읽어 온 후, 상기 엔트리 래치를 반납하는 단계;를 수행하여 트랜잭션 요구에 대한 질의 처리기 수준의 시스템 테이블 정보를 탐색하는 것을 특징으로 하는 데이터베이스 시스템에서 시스템 테이블에 대한 동시성 제어 방법.
  13. 제 12항에 있어서, 상기 동시성 제어 방법은, 상기 (b)단계에서 상기 해쉬 엔트리에 해당 레코드가 존재하지 않는 경우,
    새로운 레코드 노드를 생성하여 그 해쉬 엔트리에 추가하는 단계; 및
    읽기 잠금권한을 획득한 후 상기 저장 관리기로부터 시스템 테이블 정보를 전달받아 메모리 구조 형식으로 변환하여 상기 새로운 레코드 노드에 반영하는 단계;를 수행하여 질의 처리기 수준의 시스템 테이블 정보를 탐색하는 것을 특징으로 하는 데이터베이스 시스템에서 시스템 테이블에 대한 동시성 제어 방법.
  14. 제 12항에 있어서, 상기 동시성 제어 방법은, 트랜잭션으로부터 사용자 테이블에 대한 삭제 요청이 있을 경우,
    그 사용자 테이블 식별자 값을 통해 해쉬 엔트리를 결정하고, 해당 엔트리의 래치를 획득하는 단계;
    해당 엔트리에서 관련된 시스템 테이블 레코드를 탐색하는 단계;
    관련 시스템 테이블 레코드가 탐색될 경우, 쓰기 잠금권한을 획득하여 해당 레코드 노드를 삭제하는 단계; 및
    상기 저장 관리기를 통해 버퍼 수준의 해당 레코드 및 디스크내의 해당 사용자 테이블을 삭제한 후, 상기 엔트리 래치를 반납하는 단계;를 수행하는 것을 특징으로 하는 데이터베이스 시스템에서 시스템 테이블에 대한 동시성 제어 방법.
  15. 제 12에 있어서, 상기 동시성 제어 방법은, 디스크에 새로운 사용자 테이블을 생성하는 경우,
    사용자 테이블 식별자 값을 통해 해쉬 엔트리를 결정하고, 해당 엔트리의 래치를 획득하는 단계;
    상기 해쉬 엔트리에서 해당되는 시스템 테이블 레코드가 존재하는지 탐색하는 단계;
    해당 시스템 테이블 레코드가 존재하는 경우, 상기 엔트리 래치를 반납하고 오류로 처리하는 단계; 및
    해당 시스템 테이블 레코드가 없을 경우, 상기 저장 관리기를 통해 사용자 테이블을 생성하고 관련 시스템 테이블 정보를 변경한 후, 상기 해쉬 엔트리에 새로운 레코드 노드를 생성 추가하여 관련 시스템 테이블 정보를 저장하고, 잠금권한을 획득하여 해당 트랜잭션을 수행한 후 상기 엔트리 래치를 반납하는 단계;를 수행하는 것을 특징으로 하는 데이터베이스 시스템에서 시스템 테이블에 대한 동시성 제어 방법.
  16. 제 12항 내지 제 15항 중 어느 한 항에 있어서, 상기 잠금 획득을 위한 처리 과정은,
    대상 테이블 레코드 노드에 걸려있는 잠금모드와 현 트랜잭션이 수행하고자 하는 잠금 모드를 비교하여 공유 가능 여부를 판단하고, 대기 중인 트랜잭션이 존재하는지를 검사하는 단계;
    공유 가능하고 대기 중인 트랜잭션이 없을 경우, 요구한 잠금 모드를 노드에 기록하고, 그 접근 트랜잭션 수를 1증가시키고 잠금을 획득하는 단계; 및
    공유 불가하거나 대기 중인 트랜잭션이 존재하는 경우, 또는 공유가 불가능한 경우에는 그 트랜잭션 식별자 값을 대기 리스트에 포함시킨 후, 엔트리 래치를 반납하여 해당 트랜잭션을 블록하는 단계;를 수행하는 것을 특징으로 하는 데이터베이스 시스템에서 시스템 테이블에 대한 동시성 제어 방법.
  17. 제 12항 내지 제 15항 중 어느 한 항에 있어서, 상기 잠금 획득을 위한 처리 과정은,
    잠금을 획득한 트랜잭션 수행이 끝나면, 대기 리스트에 있는 것 중에 첫 트랜잭션이 쓰기 모드로 기다리는 경우에는 첫 트랜잭션 하나만 깨우고, 읽기 모드로 기다리는 경우에는 기다리는 트랜잭션들 중에서 읽기 모드의 것을 모두 깨워서 다시 잠금 획득 절차를 수행하도록 하는 것을 특징으로 하는 데이터베이스 시스템에서 시스템 테이블에 대한 동시성 제어 방법.
KR10-2003-0087748A 2003-12-04 2003-12-04 데이터베이스 관리시스템 및 그 시스템에서 시스템테이블에 대한 동시성 제어 방법 KR100507782B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR10-2003-0087748A KR100507782B1 (ko) 2003-12-04 2003-12-04 데이터베이스 관리시스템 및 그 시스템에서 시스템테이블에 대한 동시성 제어 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2003-0087748A KR100507782B1 (ko) 2003-12-04 2003-12-04 데이터베이스 관리시스템 및 그 시스템에서 시스템테이블에 대한 동시성 제어 방법

Publications (2)

Publication Number Publication Date
KR20050054380A KR20050054380A (ko) 2005-06-10
KR100507782B1 true KR100507782B1 (ko) 2005-08-17

Family

ID=37249720

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2003-0087748A KR100507782B1 (ko) 2003-12-04 2003-12-04 데이터베이스 관리시스템 및 그 시스템에서 시스템테이블에 대한 동시성 제어 방법

Country Status (1)

Country Link
KR (1) KR100507782B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100951099B1 (ko) 2008-07-24 2010-04-07 인하대학교 산학협력단 데이터 저장 관리 방법 및 그 방법을 수행하기 위한프로그램이 기록된 기록매체

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7860847B2 (en) * 2006-11-17 2010-12-28 Microsoft Corporation Exception ordering in contention management to support speculative sequential semantics
US8010550B2 (en) 2006-11-17 2011-08-30 Microsoft Corporation Parallelizing sequential frameworks using transactions
US8024714B2 (en) 2006-11-17 2011-09-20 Microsoft Corporation Parallelizing sequential frameworks using transactions

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19990032182A (ko) * 1997-10-16 1999-05-06 정선종 가변길이 파일의 버퍼 관리 장치 및 그 방법
KR100243113B1 (ko) * 1997-11-06 2000-02-01 정선종 데이터베이스 관리 시스템에서 에스큐엘 수준의갱신 연산의 원자성 보장 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19990032182A (ko) * 1997-10-16 1999-05-06 정선종 가변길이 파일의 버퍼 관리 장치 및 그 방법
KR100243113B1 (ko) * 1997-11-06 2000-02-01 정선종 데이터베이스 관리 시스템에서 에스큐엘 수준의갱신 연산의 원자성 보장 방법

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
멀티미디어학회논문지, 5권, 4호, 372-371쪽 *
정보과학회논문지, 29권, 5호, 393-403쪽 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100951099B1 (ko) 2008-07-24 2010-04-07 인하대학교 산학협력단 데이터 저장 관리 방법 및 그 방법을 수행하기 위한프로그램이 기록된 기록매체

Also Published As

Publication number Publication date
KR20050054380A (ko) 2005-06-10

Similar Documents

Publication Publication Date Title
US9672235B2 (en) Method and system for dynamically partitioning very large database indices on write-once tables
US7577658B2 (en) Hierarchical locking in B-tree indexes
US6321235B1 (en) Global caching and sharing of SQL statements in a heterogeneous application environment
US6792432B1 (en) Database system with methods providing high-concurrency access in B-Tree structures
US6144983A (en) Method and apparatus for dynamic lock granularity escalation and de-escalation in a computer system
US8326839B2 (en) Efficient file access in a large repository using a two-level cache
US20160267132A1 (en) Abstraction layer between a database query engine and a distributed file system
US6449607B1 (en) Disk storage with modifiable data management function
US9922086B1 (en) Consistent query of local indexes
US20120059808A1 (en) Accessing data entities
US20060161539A1 (en) Method and system of database management with shared area
US20130290636A1 (en) Managing memory
CN112867999B (zh) 基于版本的表锁定
US6484172B1 (en) Concurrency control method for high-dimensional index structure using latch and lock
US6571250B1 (en) Method and system for processing queries in a data processing system using index
CN109408519A (zh) 一种数据页的访问方法、装置、服务器及存储介质
KR100507782B1 (ko) 데이터베이스 관리시스템 및 그 시스템에서 시스템테이블에 대한 동시성 제어 방법
US7412465B2 (en) Method for append mode insertion of rows into tables in database management systems
KR20030047996A (ko) 내포 데이터베이스를 구현하는 방법, 시스템 및 데이터 구조
AU2001272863A1 (en) Method, system and data structures for implementing nested databases
US20220365905A1 (en) Metadata processing method and apparatus, and a computer-readable storage medium
KR100349667B1 (ko) 고차원 색인구조의 동시성 제어방법
US20240078252A1 (en) Method and system for efficient data management in distributed database system
US8234260B1 (en) Metadata management for scalable process location and migration
CA2249066C (en) Sharing of dynamic sql statements in a heterogeneous application environment

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: 20090727

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee