KR100295413B1 - 트랜잭션 스케줄링 방법 - Google Patents

트랜잭션 스케줄링 방법 Download PDF

Info

Publication number
KR100295413B1
KR100295413B1 KR1019980054293A KR19980054293A KR100295413B1 KR 100295413 B1 KR100295413 B1 KR 100295413B1 KR 1019980054293 A KR1019980054293 A KR 1019980054293A KR 19980054293 A KR19980054293 A KR 19980054293A KR 100295413 B1 KR100295413 B1 KR 100295413B1
Authority
KR
South Korea
Prior art keywords
transaction
marked
read
transactions
data
Prior art date
Application number
KR1019980054293A
Other languages
English (en)
Other versions
KR20000039077A (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 KR1019980054293A priority Critical patent/KR100295413B1/ko
Publication of KR20000039077A publication Critical patent/KR20000039077A/ko
Application granted granted Critical
Publication of KR100295413B1 publication Critical patent/KR100295413B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (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

1. 청구범위에 기재된 발명이 속한 기술 분야
본 발명은 트랜잭션 스케줄링 방법에 관한 것임.
2. 발명이 해결하려고 하는 기술적 과제
본 발명은 트랜잭션 지연 시간을 최소화시키며, 데이터 접근 시 충돌로 인해 지연될 수 있는 요소를 제거하는 트랜잭션 스케줄링 방법을 제공하고자 함.
3. 발명의 해결방법의 요지
본 발명은, 적어도 트랜잭션이 판독 및 기록하고자 하는 데이터들의 집합인 판독 및 기록 데이터 집합을 선언하고, 트랜잭션의 마크 여부를 기록하는 마크 트랜잭션 목록을 초기화하는 제1단계; 상기 판독 및 기록 데이터 집합을 이용하여 트랜잭션의 마킹 여부를 확인하는 제2단계; 제2단계의 확인 결과를 참조하여 트랜잭션들의 연산들을 도착 순서대로 수행하는 제3단계; 및 제3단계의 수행 완료 시점에서 상기 마크 트랜잭션 목록을 갱신하는 제4단계를 포함한다.
4. 발명의 중요한 용도
본 발명은 일반적인 DBMS나, 의사 결정 시스템 또는 다단계 데이터 베이스 시스템에서의 트랜잭션을 스케줄링하기 위해 이용됨.

Description

트랜잭션 스케줄링 방법
본 발명은 트랜잭션 스케줄링 방법 및 상기 방법을 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체에 관한 것으로, 특히 각 트랜잭션들은 마킹(marking)이라는 기법을 통해서 고유한 버전 선택기점을 갖게되고, 이를 이용하여 트랜잭션들의 판독-기록간 충돌을 제거할 수 있는 트랜잭션 스케줄링 방법 및 상기 방법을 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체에 관한 것이다.
전통적인 데이터 베이스 관리 시스템(Data Base Management System : DBMS)에서의 데이터 베이스는 다중의 사용자에 의해 공유되기 때문에 데이터 베이스 관리 시스템은 동시에 많은 사용자들에 의해 요구되어지는 트랜잭션들을 병행 수행하도록 제어해 주어야 하며, 올바른 결과가 생성될 수 있도록 보장해 주어야 한다. 이러한 데이터 베이스 관리 시스템에서 병행 수행에 대한 논리적인 일관성 기준은 직렬성(serializability)이다. 임이의 두 트랜잭션 Ti와 Tj의 연산으로 이루어진 수행기록 H에서 Ti의 연산이 Tj의 연산을 모두 선행하거나 모두 후행하면 그 수행기록은 ‘직렬(serial)이다’라고 한다. 또한 Ti와 Tj가 병행 수행하여 생성된 수행기록 H'의 결과가 두 트랜잭션이 직렬로 수행된 결과들(예를 들면, TiTj혹은 TjTi)중에 하나와 일치일 때, H'는 ‘직렬적(serializable)이다’라고 한다. 다중 버전을 위한 정확성 기준은 단일-복사본(one copy) 직렬성으로, 다중버전 수행기록인 H와 임의의 두 트랜잭션 Ti, Tj에 대해서 연산 ri[xj]가 H에 존재할 때(즉, Tj가 기록한 x의 버전 xj를 Ti가 판독하였을 때) 항상 Tj가 Ti이거나 혹은 가장 최근에 x를 생성한 트랜잭션이라면 H는 1-직렬이라고 하고, 다중버전 수행기록 H가 단일-복사본 직렬적 (one copy serializable : 1SR)이라는 것은 H가 특정한 1-직렬인 다중버전 수행기록 H'과 같은 수행결과를 가질 때를 의미한다.
종래의 트랜잭션 스케줄링 방법에는 데이터 충돌의 기회를 감소시키기 위해서 다중 버전을 사용하거나, 또는 로크(lock)나 타임스탬프(timestamp)를 이용하여 트랜잭션들을 처리하였다. 최근까지도 트랜잭션들을 효율적으로 스케줄링하기 위한 방법들이 많이 제안되어 왔다.
제1도는 종래의 다중 버전에 기초를 둔 다중버전 2단계 로킹(multiversion two phase locking : MV2PL)의 수행 기록을 나타낸 것이다.
제1도에 있어서, 시점 3에서 트랜잭션 T2가 공인 연산을 수행하려고 할 때, T1에 의해 지연된다. 즉, T2는 T1이 종료된 후, 시점 6에서 완료된다. 하지만, 이와 같은 T2의 지연은 불필요한 것이다. 종래의 다중버전 2단계 로킹 프로토콜은 판독-기록 연산간의 충돌과 기록-기록 연산간의 충돌의 제거하는 대신, 공인(certifying) 로크라는 정의를 하였다. 따라서, 각 데이터 항목은 여러 개의 비공인(uncertified) 버전을 갖게 되지만, 단일-복사본 직렬성을 만족시키기 위해서 트랜잭션들은 항상 가장 최근에 공인된 데이터 항목들만을 판독한다. 트랜잭션들이 가장 최근에 공인된 데이터 항목들만을 판독하는 다른 이유는 버전의 수를 최소화시키기 위한 것이다. 하지만, 이러한 특성은 트랜잭션의 불필요한 지연 및 취소를 초래한다.
즉, 종래의 이러한 방법들은 직렬성을 보장하기 위해서 충돌관계에 있는 트랜잭션들 중에서 임의의 한 트랜잭션을 취소하거나 지연시키게 된다. 그리고, 다중 버전을 사용하는 경우에는 임의의 데이터 항목을 판독할 때, 데이터에 대한 버전 선택의 기점을 항상 가장 최근에 해당 데이터 항목에 대한 버전이 생성된 시점으로 고정시키는데, 이와 같은 방법들은 트랜잭션의 불필요한 지연을 초래하여 병행 수행 효율을 저하시키는 요인으로 작용하고 있다. 또 다른 방법으로 과도기적(transient) 버전을 사용한 모한(Mohan)의 연구를 들 수 있다. 이 연구에서는 트랜잭션이 포함하는 연산의 종류에 따라 트랜잭션을 질의 트랜잭션과 갱신 트랜잭션으로 분류한 후, 버전구간이라는 개념을 이용하여 질의 트랜잭션과 갱신 트랜잭션에서 서로 다른 버전 구간을 갖게 한다. 따라서, 질의 트랜잭션은 갱신 트랜잭션의 간섭을 받지 않고 수행될 수 있다. 하지만, 버전 구간을 작게 설정하면 관리해야 할 버전의 수가 너무 증가하고, 버전 구간을 크게 설정하면 질의 트랜잭션은 너무 구버전을 판독하게 되는 문제점을 갖는다.
본 발명은 상기 문제점을 해결하기 위하여 안출된 것으로써, 트랜잭션 지연시간을 최소화시키며, 데이터 접근시 충돌로 인해 지연될 수 있는 요소를 제거하는 트랜잭션 스케줄링 방법 및 상기 방법을 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체를 제공하는데 그 목적이 있다.
제1도는 종래의 다중 버전 2단계 로킹 방법의 수행 기록.
제2도는 본 발명에 따른 트랜잭션 스케줄링 방법을 설명하기 위한 흐름도.
제3도는 MV2PL의 호환성을 나타낸 표.
제4도는 본 발명의 일실시예에 따른 VSP(T)에 대한 수행기록.
제5도는 R(Ti)∩R(Tj)≠Ø 인 예제 수행기록.
제6도는 R(Ti)∩W(Tj)≠Ø 인 예제 수행기록.
제7도는 W(Ti)∩W(Tj)≠Ø 인 예제 수행기록.
제8도는 R(Ti)∩R(Tj)≠Ø 이고, R(Ti)∩W(Tj)≠Ø 인 예제 수행기록.
제9도는 R(Ti)∩R(Tj)≠Ø 이고, W(Ti)∩W(Tj)≠Ø 인 예제 수행기록.
제10(a)도 및 제10(b)도는 R(Ti)∩W(Tj)≠Ø 이고, W(Ti)∩R(Tj)≠Ø 인 예제 수행기록.
제11도는 R(Ti)∩W(Tj)≠Ø 이고, W(Ti)∩W(Tj)≠Ø 인 예제 수행기록.
제12도는 R(Ti)∩R(Tj)≠Ø 이고, R(Ti)∩W(Tj)≠Ø 이고, W(Ti)∩W(Tj)≠Ø 인 예제 수행기록.
제13도는 R(Ti)∩R(Tj)≠Ø 이고, R(Ti)∩W(Tj)≠Ø 이고, W(Ti)∩R(Tj)≠Ø 인 예제 수행기록.
제14도는 R(Ti)∩W(Tj)≠Ø 이고, W(Ti)∩R(Tj)≠Ø 이고, W(Ti)∩W(Tj)≠Ø 인 예제 수행기록.
제15도는 R(Ti)∩R(Tj)≠Ø 이고, R(Ti)∩W(Tj)≠Ø 이고, W(Ti)∩R(Tj)≠Ø 인 예제 수행기록.
상기 목적을 달성하기 위한 본 발명은, 트랜잭션들의 스케줄링을 위하여 적어도 트랜잭션이 판독 및 기록하고자 하는 데이터들의 집합인 판독 및 기록 데이터 집합을 선언하고, 트랜잭션의 마크 여부를 기록하는 마크 트랜잭션 목록을 초기화하는 제1단계와, 상기 판독 및 기록 데이터 집합을 이용하여 트랜잭션의 마킹 여부를 확인하는 제2단계와, 상기 제2단계의 확인 결과에 참조하여 트랜잭션들의 연산들을 도착 순서대로 수행하는 제3단계와, 및 상기 제3단계의 수행완료 시점에서 상기 마크 트랜잭션 목록을 갱신하는 제4단계를 포함하여 이루어진 것을 특징으로 한다.
한편, 본 발명은, 컴퓨터에, 트랜잭션들의 스케줄링을 위하여 적어도 트랜잭션이 판독 및 기록하고자 하는 데이터들의 집합인 판독 및 기록 데이터 집합을 선언하고, 해당 트랜잭션의 버전 선택 시점과, 해당 트랜잭션의 마크 여부를 기록하는 마크 트랜잭션 목록을 초기화 하는 기능; 상기 판독 및 기록 데이터 집합을 이용하여 트랜잭션의 마킹 여부를 확인하는 기능; 해당 트랜잭션의 마킹 여부의 확인 결과에 따라 상기 마크 트랜잭션 목록을 갱신하는 기능; 상기 트랜잭션의 마킹 여부를 확인하는 과정에서 해당 트랜잭션의 버전 선택 시점을 갱신하는 기능; 상기 마크 트랜잭션목록 및 상기 버전 선택시점을 이용하여 트랜잭션들의 연산의 수행여부를 결정하고, 그 결정 결과에 따라 트랜잭션들의 연산들을 수행하는 기능; 및 해당 트랜잭션의 연산 수행 완료 시점에서 상기 마크 트랜잭션 목록을 갱신하는 기능을 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체를 제공한다.
이하, 첨부된 도면을 참조하여 본 발명의 실시예를 상세히 설명하고자 한다.
본 발명에서는 종래의 방법들과 같은 불필요한 지연을 없애고 트랜잭션간의 판독-기록 충돌을 제거하기 위해서 각 트랜잭션의 버전 선택 시점을 정의하고, 이를 이용하여 트랜잭션들이 데이터 접근시 충돌로 인해 지연될 수 있는 요소를 제거할 수 있는 새로운 병행 수행 제어 방법이다. 그리고, 새로운 버전 선택의 규칙과 다중 버전을 관리하기 위한 버전 관리 방법을 제안한다. 본 발병은 로크에 기반을 두고 있고 로크로 인해 발생되는 데드록 문제를 해결하고자 한다.
제2도는 본 발명에 따른 트랜잭션 스케줄링 방법을 설명하기 위한 흐름도를 도시한 것이다.
먼저, 트랜잭션 스케줄링을 위하여 트랜잭션이 판독 및 기록하고자 하는 데이터에 대한 판독 및 기록 데이터 집합을 선언한다(200).
마크된 트랜잭션의 목록을 관리하기 위한 마크 트랜잭션 목록과, 트랜잭션 버전 선택 시점을 초기화한다(202).
이어서, 판독 및 기록 데이터 집합을 이용하여 해당 트랜잭션이 마크인지를 판단하고(204) 마크되었으면 마크 트랜잭션 목록에 해당 트랜잭션을 추가한다(206). 만약, 마크가 되지 않았으며 해당 트랜잭션의 연산이 판독 연산인지를 판단한다(208). 만약, 해당 트랜잭션의 연산이 판독 연산이고, 마크가 되지 않았으면(210) 판독 연산을 수행하고(218) 마크되었으면 데드록 여부를 확인한다(212). 만약, 데드록이 아니면 마크 트랜잭션 목록에 해당 트랜잭션을 추가하고(216), 판독 연산을 수행한다(218). 만약, 데드록이면 해당 트랜잭션을 취소하고(214) 동작을 종료한다. 한편, 해당 트랜잭션의 연산이 판독 연산이 아닌 것으로 판단되면(208) 그 연산이 기록 연산인지를 판단하고(220) 기록 연산이 아니면 공인 연산을 수행하고(222) 마크 여부를 확인한다(224). 이때, 마크 인 것으로 확인되면(224) 마크 트랜잭션 목록에서 해당 트랜잭션을 제거한 후(226) 종료한다. 반대로 해당 트랜잭션의 연산이 기록 연산인 것을 판단되면(220) 가록 연산을 수행하고(228) 해당 트랜잭션의 다음 연산을 수행하기 위하여 그 연상 종류를 확인한다(208).
먼저, 본 발명의 설명상의 편의를 위해 다음과 같이 정의한다.
[정의 1]
임의의 트랜잭션 T가 하나의 데이터 항목 x를 판독하고 있을 때, 다른 트랜잭션 T′에 의해 공인 로크 요청을 받아 트랜잭션 관리자가 공인 로크를 허용하거나, 또는 T가 x를 판독하고자 하는 시점에서 이미 다른 트랜잭션 T′에 의해 공인 로크가 설정되어 있지만 트랜잭션 관리자가 판독 로크를 허용할 때, T는 마크(marked)되었다고 한다.
[정의 2]
각 트랜잭션 T에 대해서, T가 판독할 데이터 항목들의 버전선택 시점(Version Selection Point)을 VSP(T)라고 정의하고 이때, VSP(T)는 양수의 무한대 값(+∞)을 초기값으로 갖는다. T가 마크될 때. VSP(T)는 양수의 무한대 값(+∞)이 아닌 양의 정수 값을 가진다.
상술한 정의로부터 각 트랜잭션 T에 대해서, VSP(T)는 다음과 같은 세 가지 성질을 갖는다.
[성질 1]
임의의 트랜잭션 T가 한 데이터 항목 x에 대해서 판독 로크를 획득하려고 할 때, 다른 활성(active) 트랜잭션 T′이 x에 대한 공인 로크를 소유하여 T가 마크되고, 이 충돌이 T의 첫 번째 충돌이라면, 판독 로크를 획득하려 한 시점을 VSP(T)의 값으로 할당한다. 만일, 첫 번째 충돌이 아니거나 충돌이 발생하지 않는다면, VSP(T)는 변경되지 않는다.
[성질 2]
임의의 트랜잭션 T가 임의의 데이터 항목 x에 대해서 공인 로크를 획득하려 할 때, 다른 활성 트랜잭션들 T′들이 이미 판독 로크를 획득하고 있어 T′가 마크되고 T′에 대해 이 충돌이 첫 번째 충돌이라면, T가 공인 로크를 획득하려 한 시점을 VSP(T′)들의 값으로 할당한다. 충돌이 발생하지 않는 경우, VSP(T′)들은 변경되지 않는다.
[성질 3]
임의의 트랜잭션 T는 여러 번 마크될 수 있으나 VSP(T)는 마크될 때마다 갱신되는 것이 아니고, 현재 VSP(T)값과 현재 마크된 시점을 비교하여 가장 작은 값을 갖는다. 즉, VSP(T)=min(VSP(T), 현재 마크된 시점)이 된다. VSP(T)는 T가 마크되지 않으면 항상 양수의 무한대값(+∞)을 유지하며, 여러번 마크되는 경우에는 첫 번째 마크된 시점을 가지고 있다. 예를 들면, 제4도에 도시된 수행기록에서 T₁은 T₂에 의해서 마크되고, VSP(T₁)=4가 되고, VSP(T₂)=+∞가 된다.
본 발명의 설명을 위해서 각 트랜잭션 T는 자신이 판독할 데이터 항목들의 집합인 판독 집합 R(T)과 자신이 기록할 데이터 항목들의 집합인 기록 집합 W(T)를 가진다고 가정한다.
제3도는 MV2PL의 호환성 표를 도시한 것으로, 도면 부호 TH는 로크를 소유한 트랜잭션을, TR은 로크를 요구하는 트랜잭션을, R은 판독 연산을, W는 기록 연산을, C는 공인 연산을 , Y는 데이터 공유 가능 상태를, 및 N은 데이터 공유가 불가능한 상태를 각각 나타낸 것이다.
제3도에 도시된 바와 같이, 어떤 트랜잭션이 데이터를 판독하고 있는 경우, 다른 트랜잭션들은 같은 데이터 항목에 대해서 공인 연산을 수행할 수 없다. 하지만, 만일 각 트랜잭션에 대해서 적절한 버전 선택 시점을 설정하여 준다면, 판독-공인 연산간의 충돌은 제거할 수 있다. 질의가 많은 트랜잭션 처리 시스템의 경우에는 기록 트랜잭션의 수행에 영향을 적게 받으면서도 지연되지 않고 질의를 처리 할 수 있게 되어 성능을 향상시킬 수 있다.
이하, 상술한 본 발명에 따른 트랜잭션 스케줄링 방법을 제2도를 참조하여 요약 설명하면 다음과 같다.
(1) 트랜잭션 T는 수행의 시작시, 판독 집합인 R(T)과 기록 집합인 W(T)를 부여받는다.
(2) 트랜잭션 T의 버전 선택시점인 VSP(T)는 양수의 무한대값(+∞)을 초기값으로 갖는다.
(3) 마크 트랜잭션 목록(marked transaction list : MTL)은 공집합으로 초기화되며, 트랜잭션이 초기화되면 트랜잭션의 식별자를 원소로 갖는다.
(4) 모든 연산은 먼저 로크를 확인한 후 연산을 수행하고, 한번 로크를 해제하면 다시 로크를 획득할 수 없다.
(5) 판독과 다른 연산(판독, 기록, 공인)간, 기록-기록, 기록-공인 연산간에는 데이터 공유로 인한 충돌이 발생하지 않는다. 단, 공인-공인 연산간에 충돌이 존재한다.
(6) 트랜잭션 T가 시작gkf 때 MTL에 존재하는 트랜잭션dls T′들과 다음 조건을 확인한다. 만일, T와 T′가 특정 데이터 항목을 공통으로 판독하고, 또 다른(같을 수도 있음) 데이터 항목들을 공통으로 기록gks다면, 가장 작은 값을 갖는 VSP(T′)이 VSP(T)로 상속된다. 그리고, T 자신도 MTL에 삽입된다.
(7) 트랜잭션 T가 임의의 데이터 항목 x에 대해 판독연산을 수행할 때, x에 의해 특정 트랜잭션이 마크를 당했는지를 확인한다. 마크 당한 트랜잭션이 존재한다면, 그 트랜잭션 T의 기록집합과 판독집합 혹은 기록집합간에 공통 데이터 항목이 존재하는지의 여부를 확인한다. 만일, 존재한다면 VSP(T)를 그 마크 당한 트랜잭션의 VSP 값으로 대치한다. 그리고 항상 VSP(T) 이전에 생성된 버전들 중에서 가장 최근에 생성된 버전을 판독한다. VSP(T)가 양수의 무한대값(+∞)일 때는 현재시점을 기준으로 가장 최근에 생성된 버전을 판독한다.
(8) 트랜잭션 T가 임의의 데이터 항목에 대해 기록 연상을 수행할 때, 지연되지 않고 자신의 지역영역(local space)에 새로운 버전을 기록한다. 완료되기 전에 T가 기록한 데이터 항목들에 대해서는 공인연산을 수행한다.
(9) 트랜잭션 T가 다른 트랜잭션 T'에 의해 마크를 당하면, VSP(T)값을 정의에 따라 갱신시키고, 다음과 같은 사항을 점검한다.
(ⅰ) R(T)∩W(T')≠Ø 이고, W(T)∩R(T')≠Ø
T의 판독 집합과 T를 마크한 T'의 기록 집합간에 공집합이 존재하고, T의 기록집합과 T'의 판독집합간에 공집합이 존재하면 MV2PL 규칙을 적용시킨 경우, 데드록이 발생한 상태이며, 두 개의 트랜잭션을 모두 완료시키면 직렬성을 위반하게 된다. 따라서, 먼저 공인 연산을 수행한 트랜잭션은 완료시키고, 나머지 활성중인 트랜잭션은 취소시킨다. 즉, 이 프로토콜은 데드록 문제를 해결한다.
(ⅱ) R(T)∩W(T')≠Ø 이고, W(T)∩W(T')≠Ø
T의 판독집합과 T'의 기록집합간에 공집합이 존재하고 두 트랜잭션이 특정 데이터 항목에 대해 공통으로 기록연산을 갖는다면, T→T'의 순서로 트랜잭션을 수행시킨 결과를 갖도록 처리한다. 즉, T→T'으로 수행이된다면, T와 T'가 공통으로 기록하는 데이터 항목에 대해서는 T'의 기록 연산으로 인해 T의 기록연산은 덮어쓰기를 당한다. T가 T'에 의해 마크 되었기 때문에 T의 기록연산은 시간적으로 늦은(late) 기록 연산이 되고 이는 무시될 수 있다. 따라서, 마크된 트랜잭션 T와 T'가 공통으로 기록하는 데이터 항목에 대해서는 T의 기록을 무시한다. 그리고, T를 MTL에 삽입한다.
(10) 트랜잭션 T가 완료할 때, 만일 T가 마크된 트랜잭션이라면 MTL에서 자신의 식별자를 제거한다.
제5도 내지 제15도는 본 발명의 일실시예에 의한 수행결과를 도시한 것이다.
이하, 제5도 내지는 제15도를 참조하여 임의의 두 트랜잭션 Ti와 Tj의 관계를 그들의 판독집합 (R(Ti), R(Tj))과 기록집합(W(Ti), W(Tj)에 따른 각 경우에 대하여 살펴보면 다음과 같다.
[경우 1]
R(Ti)∩R(Tj)≠Ø
판독 집합만 공통 데이터 항목을 갖는 경우에는 임의의 두 트랜잭션 Ti와 Tj는 서로 충돌을 일으키기 않기 때문에 아무 문제없다. 즉, 제5도와 같이 트랜잭션들은 자신의 VSP보다 이전에 생성된 버전중 가장 최근에 생성된 데이터 항목의 버전을 판독하고 기록 연산을 수행하면 된다. 만일 VSP 값이 양수의 무한대값(+∞)이라면, 이는 현재시간을 나타낸다. 따라서, 가장 최근에 생성된 버전으로 선택을 하면 된다.
[경우 2]
R(Ti)∩W(Tj)≠Ø (혹은, W(Ti)∩R(Tj)≠Ø )
제6도에 있어서, 트랜잭션 Ti가 트랜잭션 Tj보다 먼저 완료하는 경우에는 충돌이 발생하지 않으므로 문제가 없으나, Tj가 먼저 완료하는 경우에는 Ti는 Tj에 의해 마크된다. 그러면, Ti의 VSP(Ti)는 Tj의 공인 요청시간인 5로 설정된다. 그리고, Ti가 VSP(Ti)이전에 생성된 데이터 항목의 버전들만을 판독하면 직렬성을 위배하지 않고 병행수행이 가능하다. 기록 연산끼리는 문제를 발생시키지 않는다.
[경우 3]
W(Ti)∩W(Tj)≠Ø
제7도와 같이 다중 버전의 경우, 기록과 기록간의 충돌은 존재하지 않는다. 따라서, 아무 문제를 발생시키지 않는다.
[경우 4]
R(Ti)∩R(Tj)≠Ø 이고, R(Ti)∩W(Tj)≠Ø
이 경우에는 Tj가 Ti를 마크시킬 수 있다. Ti는 자신이 마크되었는지에 여부에 따라서 자신의 VSP(Ti)를 설정하고, 판독시에는 VSP(Ti) 이전에 생성된 버전들만을 판독하면 직렬성을 보장 할 수 있다. 하지만, 이 경우 제 3의 트랜잭션에 의해 싸이클이 발생할 수 있다. 즉, 제8도에 도시한 바와 같이 Tk가 Tj가 기록한 x의 버전을 판독하고, y에 대해서는 Ti가 기록하기 이전의 버전을 판독한다면 직렬성을 보장 할 수 없다. 따라서, Tk는 Ti에 의해 기록된 x의 버전이 아니라 그 이전의 버전을 판독하여야 한다. 이를 보장하기 위해서, 트랜잭션 관리자는 Tk가 데이터 항목을 판독할 때 x에 의해 마크 당한 트랜잭션이 존재하는 가의 여부를 확인하고, 존재한다면 그 트랜잭션의 기록 집합과 Tk의 판독 집합간의 공통 데이터 항목이 존재하는지를 확인하고 만일 존재한다면 그 마크 당한 트랜잭션의 VSP값을 상속받는다.
[경우 5]
R(Ti)∩R(Tj)≠Ø 이고, W(Ti)∩W(Tj)≠Ø
제9도에서 Ti와 Tj가 같은 데이터 버전을 판독한 경우에는 문제가 발생하지 않지만, 이 경우도 [ 경우 4]와 마찬가지로 제 3의 트랜잭션에 의해 싸이클이 발생할 수 있다. 즉, Ti가 마크 되었는지의 여부에 따라서 Tj가 선택하는 버전이 달라진다. 만일 Ti가 마크되지 않았으면, Tj의 VSP(Tj)는 VSP(Ti)에 영향받지 않으나, Ti가 마크되었다면, VSP(Tj)는 VSP(Ti)의 값을 상속받는다. 위의 경우에서는 Tj는 Ti가 판독한 버전을 선택한다.
[경우 6]
R(Ti)∩W(Tj)≠Ø 이고, W(Ti)∩R(Tj)≠Ø
이 경우는 MV2PL 규칙을 적용했을 때 데드록이 발생할 수 있는 경우이다. 제10(a)도의 경우에는 Ti가 Tj에 의해 마크되지 않고 수행된다. 따라서, Tj가 완료된 후, Ti는 Tj가 기록한 x의 버전을 판독한다. 반면, 제10(b)도의 경우는 Ti가 Tj에 의해서 마크되고, MV2PL프로토콜 규칙을 적용시키면 데드록이 발생하는 경우이다. 즉, Ti 혹은 Tj를 취소시키지 않으면 직렬성을 보장할 수 없게 된다. 따라서, 이 경우에는 Tj를 완료시키고, Tj를 완료시키는 시점에서 Ti를 취소시킴으로써 데드록을 제거하고 직렬성도 보장한다.
[ 경우 7]
R(Ti)∩W(Tj)≠Ø 이고, W(Ti)∩W(Tj)≠Ø
이 경우에도 Ti가 Tj에 의해 마크되지 않는다면 문제가 없으나, 제11도에 도시한 바와 같이, 시점 4에서 Ti가 Tj에 의해서 마크되는 경우에는 Ti의 기록 연산들 중에서 Tj와 공통으로 기록하는 데이터 항목에 대한 연산은 Ti, Tj 순서로 수행시켰을 때 덮어쓰기를 당하기 때문에 무시할 수 있다.(블라인드 기록)
[ 경우 8]
R(Ti)∩R(Tj)≠Ø 이고, R(Ti)∩W(Tj)≠Ø 이고, W(Ti)∩W(Tj)≠Ø
이 경우에는 Ti가 기록하는 데이터 항목을 Tj는 판독하지 않는다. 이는 [경우 5]에서 처럼 Ti가 마크된 트랜잭션인가의 여부에 따라 선택이 달라진다. 즉, 제12도에 도시한 바와 같이, Ti와 Tj가 공통으로 판독하는 데이터 항목에 대해서 만일 Ti가 마크된 트랜잭션이라면 VSP(Tj)는 VSP(Ti)를 상속받는다. 그리고, [ 경우 7]과 같이 만일 Ti가 Tj에 의해 마크된다면, Ti와 Tj가 공통으로 기록하는 데이터 항목에 대한 Ti의 기록연산은 무시된다.
[경우 9]
R(Ti)∩R(Tj)≠Ø 이고, R(Ti)∩W(Tj)≠Ø 이고, W(Ti)∩R(Tj)≠Ø
이 경우에는 [ 경우 4]와 [ 경우 6]을 함께 고려한 것으로 MV2PL 규칙을 적용시키면 [ 경우 6]과 마찬가지로 데드록을 발생시킨다. 두 개의 트랜잭션을 모두 수행시키면 직렬성을 보장할 수 없기 때문에 만일, 한 트랜잭션이 다른 트랜잭션을 마크시키는 경우에는 제13도에 도시한 바와 같이, 먼저 완료하는 트랜잭션을 제외한 나머지 트랜잭션을 취소시킨다.
[경우 10]
R(Ti)∩W(Tj)≠Ø 이고, W(Ti)∩R(Tj)≠Ø 이고, W(Ti)∩W(Tj)≠Ø
Ti와 Tj가 상대방에 의해 마크되지 않는다면 문제가 없지만, 그렇지 않다면 제13도에 도시한 바와 같이, [경우 6]과 동일하게 데드록 처리하여 먼저 완료하는 트랜잭션의 완료시점에서 나머지 트랜잭션을 취소시킴으로써 직렬성을 보장한다.
[경우 11]
R(Ti)∩R(Tj)≠Ø 이고, R(Ti)∩W(Tj)≠Ø 이고, W(Ti)∩R(Tj)≠Ø 이고, W(Ti)∩W(Tj)≠Ø
[경우 5]에서 처럼, Ti가 마크되었는지의 여부에 따라서 Tj가 선택하는 버전 시점이 달라진다. 만일 Ti가 마크되지 않았으면 Tj의 VSP(Tj)는 VSP(Ti)에 영향받지 않으나, Ti가 마크되었다면 VSP(Tj)는 VSP(Ti)의 값을 상속받는다. 제15도에서 도시된 바와 같이, [경우 10]와 동일하게 Ti의 늦은 기록 연산으로 인해 데드록이 발생되면 Ti를 취소시킴으로써 직렬성을 보장한다.
이상에서 살펴본 각 경우에 대한 모든 수행 결과는 [정의 3]을 만족한다.
[정리 3]
‘본 발명에 따른 트랜잭션 스케줄링 방법에 생성된 모든 수행결과들은 단일-복사본 직렬적이다.’
이하, 상기 정리 3을 증명하면 다음과 같다.
T={T1, T2, ..., TN}을 트랜잭션들의 집합이라고 할 때, T에서 정의된 트랜잭션들이 본 발명에 의해 생성된 수행 기록을 H라고 하고 트랜잭션 Ti의 공인 연산을 cri라고 나타내자. 그리고, 버전순서 xi≪xj는 cri< crj연산을 함축한다고 정의하자. 우선, Ti가 선택하는 버전들을 살펴보자, 만일 Ti가 마크되지 않았다면, 버전을 선택하는 규칙은 다중버전 2단계 로킹(MV2PL) 방법과 같이 가장 최근에 공인된 버전을 선택한다. 그렇지 않다면, Ti가 판독하는 버전은 VSP(T) 이전에 생성된 것들 중에 가장 최근에 공인된 버전이다. VSP(T)는 규칙 M10에 의해서 공인 연산 수행시 공인 시각을 값으로 갖기 때문에, 만일 트랜잭션들이 마크 당하지 않sms다면, VSP(T)는 공인 순서를 나타내는 인수로 사용될 수 있다. 또한, 마크를 당한 트랙잭션에 대해선 VSP(T)가 T를 마크한 트랜잭션의 수행 시간 이전으로 만들기 때문에 가상 공인 시간으로 간주할 수 있다. 따라서 MVSG(H, ≪)에 속하는 모든 에지 Ti→Tj에 대해서, 그들이 VSP(Ti) < VSP(Tj)임을 보이고, 만일 VSP(Ti) = VSP(Tj)이면 cri< crj임을 보임으로써MVSG(H, ≪)가 비순환적임을 증명하면 된다.
우선, Ti→Tj가 노드를 트랜잭션으로 갖고 트랜잭션간의 충돌관계를 에지로 갖는 직렬화 그래프 SG(H)에 속하는 에지라고 가정하자. 이 에지는 판독 관계를 나타낸다. 즉, 임의의 데이터 항목 x에 대해서 wi[xi]<rj[xi]의 관계를 나타낸다. 이 때, 제안한 프로토콜의 규칙에 따라서 항상 공인된 버전만을 판독하므로 cri< crj이고 Ti와 Tj는 마크 여부와 상관없이 Ti가 먼저 공인되었기 때문에 VSP(Ti) < VSP(Tj)가 된다.
다음은 버전 에지를 고려한다. 서로 상이한 i, j, k에 대해서 H의 연산 wi[xi]와 rk[xj]를 고려해 보면, 두 가지 경우가 가능하다. (ⅰ) xi≪xj와(ⅱ) xj≪xi이다. 만일, xi≪xj라면 정의에 의해 MVSG(H, ≪)에 Ti→Tj 버전순서 에지를 추가시킨다. 이는 Ti와 Tj가 마크되지 않았다면 M10에 의해서 VSP(Ti) < VSP(Tj)를 나타낸다. 또한, 만일 VSP(Ti) > VSP(Tj)라면 Ti의 선택시점이 Tj이후가 되기 때문에 M9규칙을 위반하게 된다. 따라서, VSP(Ti) ≪ VSP(Tj)를 만족한다. 그리고 버전순서의 정의에 의해서 cri< crj이다.
만일 xj≪xi라면 정의에 의해 MVSG(H,≪∩)에 Tk→Ti로의 버전순서 에지를 추가시킨다. 그러면cri<rk[xj] 이거나 rk[xj] < cri이다. 하지만, 정의에 의해 xj≪xi이면 crj< cri이고, 공인 연산은 판독 연산이나 기록 연산보다 후행하는 완료전의 마지막 연산이 된다. 따라서, cri<rk[xj] 경우에 crj< cri<rk[xj] 가 되므로, Tk는 더 최근의xi를 판독하지 않았기 때문에 마크되었음을 알 수 있다. 즉,VSP(Tk)< VSP(Ti)이다.rk[xj] < cri인 경우에는 Ti가Tk를 마크시키는지의 여부에 따라 두 경우로 나눌 수 있다. 즉, Tk를 Ti가 마크시키는 경우에는 정의에 의해 VSP(Tk)< VSP(Ti)이다. Tk가 마크되지 않는 경우란 Tk가 Ti보다 먼저 공인 연산을 수행하는 경우이다. 따라서, crk< cri가 되고 규칙 M10에 의해서 VSP(Tk) ≪ VSP(Ti)가 된다. 그러므로, MVSG(H, ≪)에 속하는 모든 에지들이 공인연산 순서로 되어 있기 때문에 MVSG(H, ≪)는 비순환적이다. 따라서 H는 단일-복사본 직렬적이다.
기존의 상용 DBMS들이 로킹에 기반을 두고 있어 판독 연산만을 수행하는 질의 트랜잭션들도 갱신 연산을 함께 수행하는 트랜잭션들에 의해 불필요하게 지연될 수 있는데 반해, 상기와 같이 이루어지는 본 발명은 질의가 주를 이루는 의사 결정 시스템에 도입하는 경우, 질의 트랜잭션들은 절대로 지연되지 않기 때문에 빠른 응답 시간을 제공할 수 있어 성능의 향상을 가져오게 된다.
또한, 본 발명에 의한 마킹 기법은 향후 강제적 접근 제어기법을 취하는 다단계 보안 데이터베이스 시스템을 위한 트랜잭션 기법에서도 사용될 수 있다는 확장성을 갖는다.
또한, 본 발명은 판독-기록간의 충돌을 제거하기 때문에 판독 연산만을 수행하는 질의 트랜잭션이 많은 트랜잭션 시스템을 적용 분야로 들 수 있다. 즉, 데이터 객체와 사용자에게 고유한 보안 등급을 부여하고 보안 등급에 따라서 사용자 트랜잭션을 수행시키는 다단계 보안 데이터베이스 시스템을 위한 트랜잭션 스케줄링 방법으로 사용 가능하므로, 방대한 데이터 웨어하우스(warehouse)를 이용하는 의사 결정시스템을 위한 트랜잭션 스케줄링 방법으로 사용 가능하다.

Claims (8)

  1. 트랜잭션들의 스케줄링을 위하여 적어도 트랜잭션이 판독 및 기록하고자 하는 데이터들의 집합인 판독 및 기록 데이터 집합을 선언하고, 트랜잭션의 마크 여부를 기록하는 마크 트랜잭션 목록을 초기화하는 제1단계 : 상기 판독 및 기록데이터 집합을 이용하여 트랜잭션의 마킹 여부를 확인하는 제2단계 : 상기 제2단계의 확인 결과에 참조하여 트랜잭션들의 연산을 도착 순서대로 수행하는 제3단계; 및 상기 제3단계의 수행 완료 시점에서 상기 마크 트랜잭션 목록을 갱신하는 제4단계를 포함하는 트랜잭션 스케줄링 방법.
  2. 제1항에 있어서, 상기 제2단계를 수행하는 과정에서 해당 트랜잭션의 버전선택 시점을 갱신하는 제5단계; 및 상기 제2단계의 수행결과에 따라 상기 마크 트랜잭션 목록을 갱신하는 제6단계를 더 포함하는 트랜잭션 스케줄링 방법.
  3. 제2항에 있어서, 상기 제5단계를 수행한후, 해당 데이터에 대한 상기 버전 선택시점을 비교하는 제7단계; 및 상기 제7단계의 비교 결과에 따라 상기 제3단계에서 해당 트랜잭션의 연산의 수행 여부를 결정하는 제8단계를 더 포함하는 트랜잭션 스케줄링 방법.
  4. 제2항 또는 제3항에 있어서, 상기 제5단계는, 해당 트랜잭션이 어떤 데이터에 대하여 판독 로크를 획득하고자 하는 시점에서 활성화된 다른 트랜잭션이 동일 데이터에 대한 공인 로크를 소유하여 해당 트랜잭션이 마킹될 때, 이러한 충돌이 첫 번째 충돌이면 버전 선택 시점은 해당 트랜잭션이 판단 로크를 획득하고자 한 시점으로 갱신하고, 그렇지 않으면 갱신하지 않는 것을 특징으로 하는 트랜잭션 스케줄링 방법.
  5. 제2항 또는 제3항에 있어서, 상기 제5단계는, 해당 트랜잭션이 어떤 데이터에 대하여 공인 로크를 획득하고자 시점에서 다른 활성 트랜잭션이 동일 데이터에 대하여 이미 판독 로크를 획득하고 있어서 다른 트랜잭션이 마킹될 때, 이러한 충돌이 첫 번째 충돌이라면 상기 버전 선택 시점은 해당 트랜잭션이 공인 로크를 획득하고자 하는 시점으로 갱신하고, 그렇지 않으면 갱신하지 않은 것을 특징으로 하는 트랜잭션 스케줄링 방법.
  6. 제2항 또는 제3항에 있어서 상기 제5단계에서의 버전 선택시점은, 현재의 이전 버전선택 시점과 해당 트랜잭션이 마크된 시점을 비교하여 가장 작은 값으로 갱신되는 것을 특징으로 하는 트랜잭션 스케줄링 방법.
  7. 제1항 내지 제3항 중 어느 한 항에 있어서, 상기 제2단계는 해당 트랜잭션이 데이터를 판독하는 시점에서 다른 트랜잭션이 공인 로크를 요구하여 허용 받을 때, 또는 다른 트랜잭션이 공인 로크를 소유하는 시점에서 해당 트랜잭션이 동일 데이터에 대한 판독 로크를 이용하여 허용 받을 때, 해당 트랜잭션이 마킹된 것을 확인하는 것을 특징으로 하는 트랜잭션 스케줄링 방법.
  8. 컴퓨터에, 트랜잭션들의 스케줄링을 위하여 적어도 트랜잭션이 판독 및 기록하고자 하는 데이터들의 집합인 판독 및 기록 데이터 집합을 선언하고, 해당 트랜잭션의 버전 선택 시점과, 해당 트랜잭션의 마크 여부를 기록하는 마크 트랜잭션 목록을 초기화 하는 기능; 상기 판독 및 기록 데이터 집합을 이용하여 트랜잭션의 마킹 여부를 확인하는 기능; 해당 트랜잭션의 마킹 여부의 확인결과에 따라 상기 마크 트랜잭션 목록을 갱신하는 기능; 상기 트랜잭션의 마킹 여부를 확인하는 과정에서 해당 트랜잭션의 버전 선택 시점을 갱신하는 기능; 상기 마크 트랜잭션 목록 및 상기 버전 선택 시점을 이용하여 트랜잭션들의 연산의 수행 여부를 결정하고, 그 결정 결과에 따라 트랜잭션들의 연산들을 수행하는 기능; 및 해당 트랜잭션의 연산 수행 완료 시점에서 상기 마크 트랜잭션 목록을 갱신하는 기능을 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체.
KR1019980054293A 1998-12-11 1998-12-11 트랜잭션 스케줄링 방법 KR100295413B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1019980054293A KR100295413B1 (ko) 1998-12-11 1998-12-11 트랜잭션 스케줄링 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019980054293A KR100295413B1 (ko) 1998-12-11 1998-12-11 트랜잭션 스케줄링 방법

Publications (2)

Publication Number Publication Date
KR20000039077A KR20000039077A (ko) 2000-07-05
KR100295413B1 true KR100295413B1 (ko) 2001-11-05

Family

ID=19562293

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019980054293A KR100295413B1 (ko) 1998-12-11 1998-12-11 트랜잭션 스케줄링 방법

Country Status (1)

Country Link
KR (1) KR100295413B1 (ko)

Also Published As

Publication number Publication date
KR20000039077A (ko) 2000-07-05

Similar Documents

Publication Publication Date Title
US6772155B1 (en) Looking data in a database system
EP1540533B1 (en) Controlling visibility in multi-version database systems
US8396831B2 (en) Optimistic serializable snapshot isolation
US7146366B2 (en) Distributed concurrency control using serialization ordering
US5280619A (en) System for accessing shared data using a serialization graph constructed from a history file showing completed locking dependencies between transactions
US5983225A (en) Parameterized lock management system and method for conditional conflict serializability of transactions
US7243088B2 (en) Database management system with efficient version control
US5592661A (en) Detection of independent changes via change identifiers in a versioned database management system
US5212788A (en) System and method for consistent timestamping in distributed computer databases
US5504879A (en) Resolution of relationship source and target in a versioned database management system
US6944615B2 (en) System and method for avoiding deadlock situations due to pseudo-deleted entries
US7370049B2 (en) Detection and prevention of writing conflicts within nested query statements
JP2001523367A (ja) トランザクションの条件付き競合直列化可能性のための、及び信頼性の程度が変化するメタデータを組合わせるデータベース管理システム及び方法
US20110040738A1 (en) Parallel nested transactions in transactional memory
Lam et al. Resolving executing–committing conflicts in distributed real-time database systems
Smith et al. Correctness criteria for multilevel secure transactions
Agrawal et al. The performance of protocols based on locks with ordered sharing
US7412465B2 (en) Method for append mode insertion of rows into tables in database management systems
KR100295413B1 (ko) 트랜잭션 스케줄링 방법
KR100321747B1 (ko) 얼림 기법을 이용한 트랜잭션 관리 방법
Hollins Transaction Isolation Levels and Object Oriented Data Structures
Adya et al. Towards an Isolation Level Standard
Park et al. A transaction management scheme with mark in decision supporting environments
Ramamritham et al. Accessing Extra Database Information: Concurrency Control and Correctness
Dathan Transaction management in N-version programmed database systems

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

Year of fee payment: 10

LAPS Lapse due to unpaid annual fee