KR101634403B1 - 공유 디스크 데이터베이스 시스템에서 락 통신들을 감소시키기 위한 접근 방법들 - Google Patents
공유 디스크 데이터베이스 시스템에서 락 통신들을 감소시키기 위한 접근 방법들 Download PDFInfo
- Publication number
- KR101634403B1 KR101634403B1 KR1020100115390A KR20100115390A KR101634403B1 KR 101634403 B1 KR101634403 B1 KR 101634403B1 KR 1020100115390 A KR1020100115390 A KR 1020100115390A KR 20100115390 A KR20100115390 A KR 20100115390A KR 101634403 B1 KR101634403 B1 KR 101634403B1
- Authority
- KR
- South Korea
- Prior art keywords
- locks
- row
- lock
- database
- determining
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2308—Concurrency control
- G06F16/2336—Pessimistic concurrency control approaches, e.g. locking or multiple versions without time stamps
- G06F16/2343—Locking methods, e.g. distributed locking or locking implementation details
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
공유 디스크 데이터베이스 시스템에서의 락 통신들(lock communications)은 몇 가지 접근법들에 의해 감소된다. 이 접근법들은, 작업을 위해 요구되는 락들 및 장래에 요구될 락들을 위해 락 관리자에게 단일 메시지를 송신하는 단계 - 상기 작업들은 행 갱신, 행 삭제, 광범위한 스캔(large scan), 및 행 삽입을 포함할 수 있음 -; 두 개의 실행들에서의 작업을 수행하는 단계 - 제1 실행에서 상기 작업을 위해 요구되는 락들은 상기 작업을 수행함이 없이 결정되고, 제2 실행에서 단일 메시지는 상기 요구되는 락들을 위해 락 관리자에게 송신되며, 상기 작업이 수행됨 -; 자유 공간 검색(free space searching)에서, 행 삽입이 실제 수행되기 전에 행 및 페이지 락들을 위해 락 관리자에게 단일 메시지를 송신하는 단계; 및 불공평한 방법(unfair manner)으로 락을 부여하는 단계를 포함한다.
Description
본 발명은 공유 디스크 데이터베이스 시스템(shared disk database system)에서 락 통신들(lock communications)을 감소시키기 위한 접근 방법들과 관련된다. 더 상세하게는, 본 발명은 공유 디스크 데이터베이스 시스템에서 락 통신들을 감소시키기 위한 시스템, 방법 또는 컴퓨터 프로그램 제품과 관련된다.
공유 디스크 데이터베이스 시스템에서는, 일반적으로 중앙 엔티티(central entity)가 락들(locks)을 소유한다. 이 중앙 엔티티는 락들 모두를 소유하거나 분산된 락 소유권(distribited lock ownership)을 갖는다. 분산된 락 소유권의 경우에는, 공유되는 디스크 클러스터 내의 각각의 멤버가 락들의 특정 부분을 소유한다. 락을 소유하는 엔티티는 락을 요구하는 어떤 클러스터 멤버에게 락을 제공해야 하는 책임이 있다.
락 소유자로부터 락을 획득하기 위해 요구되는 통신들의 양은 어떤 공유 디스크 시스템의 성능에 상당히 영향을 미칠 수 있다. 각각의 메시지는 전체 시스템 처리량(throughput)에 영향을 미칠 뿐만이 아니라 처리 및 네트워크 대역폭 소비를 요구한다. 메시지들의 수를 감소시키면 결국 이들 리소스들의 소비가 감소될 것이다.
본 발명의 일 실시예에 따라, 공유 디스크 데이터베이스 시스템에서의 락 통신들(lock communications)은 락들을 프리페치(pre-fetch)함으로써 감소되는데, 이 방법은, 상기 데이터베이스 시스템 상에 데이터를 변경(modify)하기 위한 작업(operation) - 상기 작업은 복수의 락들을 요구함 - 이 호출(invoke)됨을 결정하는 단계; 상기 작업을 위해 요구되는 하나 또는 그 이상의 락들 및 장래에 요구될 하나 또는 그 이상의 락들을 결정하는 단계; 및 상기 작업을 위해 요구되는 락들 및 장래에 요구될 락들을 위해 상기 데이터베이스 시스템의 락 관리자(lock manager)에게 네트워크를 통해 단일 메시지(single message)를 송신하는 단계를 포함한다. 상기 작업은 행 갱신 작업(row update operation), 행 삭제 작업(row delete operation), 광범위한 스캔(large scan)을 요구하는 작업, 및 행 삽입 작업(row insert operation)을 포함한다.
본 발명의 또 다른 실시예에서, 공유 디스크 데이터베이스 시스템에서의 락 통신들은 두 개의 실행들(executions)에서 상기 작업을 수행함으로써 감소된다. 상기 행 변경 작업의 제1 실행에서, 상기 행 변경을 수행함이 없이 상기 행 변경 작업을 위해 요구되는 락들을 결정한다. 상기 제1 실행은, 상기 행 변경 작업에 의해 변경될 하나 또는 그 이상의 행들을 위한 하나 또는 그 이상의 행 식별자들(row identifiers)을 표 인덱스(table index)에서 검색하는 단계, 상기 행 변경 작업에 의해 변경될 행들을 포함하는 하나 또는 그 이상의 페이지들을 위한 하나 또는 그 이상의 페이지 식별자들(page identifiers)을 상기 행 식별자들로부터 결정하는 단계, 및 상기 행 변경 작업에 의해 변경될 행들을 위한 인덱스 키(index key)를 포함하는 표 인덱스에서 하나 또는 그 이상의 페이지들을 위한 하나 또는 그 이상의 인덱스 페이지 식별자들(index page identifiers)을 결정하는 단계를 포함한다. 상기 행 변경 작업의 제2 실행에서, 상기 행 식별자들, 상기 페이지 식별자들, 및 상기 인덱스 페이지 식별자들을 위한 락들(locks)을 위해 상기 데이터베이스 시스템의 락 관리자에게 네트워크를 통해 단일 메시지를 송신하는 단계, 및 상기 행 변경을 수행하는 단계를 포함한다.
본 발명의 또 다른 실시예에서, 공유 디스크 데이터베이스 시스템에서의 락 통신들은, 상기 데이터베이스 시스템 상에 행 삽입 작업이 호출됨을 결정하고; 상기 데이터베이스 시스템의 하나 또는 그 이상의 표들 내에서 행이 삽입될 수 있는 복수의 빈 공간들(empty spaces)을 결정하고; 상기 빈 공간들 내의 복수의 행들을 위한 복수의 행 식별자들을 결정하고; 상기 복수의 빈 공간들을 포함하는 하나 또는 그 이상의 페이지들을 위한 하나 또는 그 이상의 페이지 식별자들을 상기 복수의 행 식별자들로부터 결정하고; 상기 복수의 행 식별자들 및 상기 복수의 페이지 식별자들을 위한 락들(locks)을 위해 상기 데이터베이스 시스템의 락 관리자에게 네트워크를 통해 단일 메시지를 송신하고; 상기 복수의 행 식별자들, 및 상기 행이 삽입되는 빈 공간들 내의 슬롯에 대응하는 상기 복수의 페이지 식별자들을 위한 락들을 위해 상기 락 관리자에게 요청을 송신함이 없이, 상기 행 삽입 작업을 수행함으로써 감소된다.
본 발명의 또 다른 실시예에서, 제1 호스트 컴퓨터 및 제2 호스트 컴퓨터를 포함하는 공유 디스크 데이터베이스 시스템에서의 락 통신들은, 상기 제1 호스트 컴퓨터에 동작적으로 결합된(operatively coupled) 복수의 사용자들에 의해 요청되는 락을 위해 상기 데이터베이스 시스템의 락 관리자에게 상기 제1 호스트 컴퓨터에 의해 단일 메시지를 송신하고; 상기 제2 호스트 컴퓨터에 동작적으로 결합된 하나 또는 그 이상의 사용자들에 의해 요청되는 동일한 락을 위해 상기 데이터베이스 시스템의 락 관리자에게 상기 제2 호스트 컴퓨터에 의해 단일 메시지를 송신하고; 상기 락의 소유권(ownership)의 부여(grant)를 상기 제1 호스트 컴퓨터에 의해 수신하고; 상기 락을 풀기 전에, 상기 락의 소유권을 상기 락을 요청한 상기 제1 호스트 컴퓨터에 동작적으로 결합된 각각의 사용자에게 상기 제1 호스트 컴퓨터에 의해 부여하고; 상기 제1 호스트 컴퓨터에 의해 상기 락을 풀고; 상기 락의 소유권의 부여를 상기 제2 호스트 컴퓨터에 의해 수신함으로써 감소된다.
도 1은 본 발명의 일 실시예를 이용하는 데이터 처리 시스템의 일 예를 도시한다.
도 2는 락들을 프리페치함으로써 락 요청들을 단일 메시지로 결합하기 위한 방법의 일 실시예를 도시하는 흐름도이다.
도 3은 행 갱신 작업들을 위해 락 요청들을 단일 메시지로 결합하기 위한 방법의 일 실시예를 도시하는 흐름도이다.
도 4는 행 삭제 작업들을 위해 락 요청들을 단일 메시지로 결합하기 위한 방법의 일 실시예를 도시하는 흐름도이다.
도 5는 광범위한 스캔들(large scans)을 위해 락 요청들을 단일 메시지로 결합하기 위한 방법의 일 실시예를 도시하는 흐름도이다.
도 6은 새로운 삽입 페이지들을 위해 락 요청들을 단일 메시지로 결합하기 위한 방법의 일 실시예를 도시하는 흐름도이다.
도 7은 작업의 이중 실행(double execution)을 통해 락들의 조기 획득(early acquisition)을 위한 방법의 일 실시예를 도시하는 흐름도이다.
도 8은 자유 공간 검색(free space searching)에서 락들의 조기 획득을 위한 방법의 일 실시예를 도시하는 흐름도이다.
도 9는 불공평한 방법(unfair manner)으로 락들을 부여함으로써 락 트래픽(lock traffic)을 감소시키기 위한 방법의 일 실시예를 도시하는 흐름도이다.
도 2는 락들을 프리페치함으로써 락 요청들을 단일 메시지로 결합하기 위한 방법의 일 실시예를 도시하는 흐름도이다.
도 3은 행 갱신 작업들을 위해 락 요청들을 단일 메시지로 결합하기 위한 방법의 일 실시예를 도시하는 흐름도이다.
도 4는 행 삭제 작업들을 위해 락 요청들을 단일 메시지로 결합하기 위한 방법의 일 실시예를 도시하는 흐름도이다.
도 5는 광범위한 스캔들(large scans)을 위해 락 요청들을 단일 메시지로 결합하기 위한 방법의 일 실시예를 도시하는 흐름도이다.
도 6은 새로운 삽입 페이지들을 위해 락 요청들을 단일 메시지로 결합하기 위한 방법의 일 실시예를 도시하는 흐름도이다.
도 7은 작업의 이중 실행(double execution)을 통해 락들의 조기 획득(early acquisition)을 위한 방법의 일 실시예를 도시하는 흐름도이다.
도 8은 자유 공간 검색(free space searching)에서 락들의 조기 획득을 위한 방법의 일 실시예를 도시하는 흐름도이다.
도 9는 불공평한 방법(unfair manner)으로 락들을 부여함으로써 락 트래픽(lock traffic)을 감소시키기 위한 방법의 일 실시예를 도시하는 흐름도이다.
당해 기술 분야에서 숙련된 자라면 이해할 수 있는 바와 같이, 본 발명의 측면들은 시스템, 방법 또는 컴퓨터 프로그램 제품으로 구현될 수 있다. 따라서, 본 발명의 측면들은 전적으로 하드웨어 실시예의 형태를 취할 수도 있고, 전적으로 소프트웨어 실시예의 형태(펌웨어, 상주 소프트웨어, 마이크로-코드 등을 포함함)를 취할 수도 있고, 또는 소프트웨어 및 하드웨어 측면들 - 이들 모두는 본 명세서 내에서 일반적으로 "회로", "모듈" 또는 "시스템"으로 일컬어질 수 있음 - 을 조합하는 실시예의 형태를 취할 수도 있다. 더 나아가, 본 발명의 측면들은 하나 또는 그 이상의 컴퓨터 판독가능 매체(들) - 하나 또는 그 이상의 컴퓨터 판독가능 매체(들)은 이것(이것들) 상에 구현된 컴퓨터 판독가능 프로그램 코드를 가짐 - 에 구현된 컴퓨터 프로그램 제품의 형태를 취할 수 있다.
하나 또는 그 이상의 컴퓨터 판독가능 매체(들)의 어떤 조합이든지 이용될 수 있다. 상기 컴퓨터 판독가능 매체는 컴퓨터 판독가능 신호 매체 또는 컴퓨터 판독가능 스토리지 매체일 수 있다. 컴퓨터 판독가능 스토리지 매체는, 예를 들어, 전자, 자기, 광학, 전자기, 적외선, 또는 반도체 시스템, 장치, 또는 디바이스, 또는 이것들의 적절한 조합일 수 있다. 그러나 이러한 예들로 한정되는 것은 아니다. 상기 컴퓨터 판독가능 스토리지 매체의 더 구체적인 예들에는, 하나 또는 그 이상의 와이어들을 갖는 전기적 연결, 휴대용 컴퓨터 디스켓, 하드 디스크, 임의 접근 메모리(random access memory, RAM), 읽기 전용 메모리(read-only memory, ROM), 소거형 프로그램가능 읽기 전용 메모리(erasable programmable read-only memory, EPROM 또는 플래쉬 메모리), 또는 광섬유, 휴대용 컴팩트 디스크 읽기 전용 메모리(CD-ROM), 광 스토리지 디바이스, 자기 스토리지 디바이스, 또는 이것들의 적절한 조합이 포함될 수 있다. 그러나 이러한 예들로 한정되는 것은 아니다. 본 명세서의 맥락에서, 컴퓨터 판독가능 스토리지 매체는 명령 실행 시스템, 장치, 또는 디바이스에 의해 사용하기 위한, 또는 명령 실행 시스템, 장치, 또는 디바이스와 함께 사용하기 위한 프로그램을 포함, 또는 저장할 수 있는 어떤 실체적인 매체일 수 있다.
컴퓨터 판독가능 신호 매체는 전파되는 데이터 신호(propagated data signal) - 이 전파되는 데이터 신호는 그 내에 구현되는 컴퓨터 판독가능 프로그램 코드를 가짐 - 를 포함할 수 있다. 상기 컴퓨터 판독가능 프로그램 코드는 기저대역(baseband) 또는 반송파(carrier wave)의 일부로서 구현될 수 있다. 이러한 전파되는 신호는 여러 가지 형태를 취할 수 있는데, 예를 들어, 전자기, 광학, 또는 이것들의 적절한 조합의 형태를 취할 수 있다. 그러나 이러한 예들로 한정되는 것은 아니다. 컴퓨터 판독가능 신호 매체는 컴퓨터 판독가능 스토리지 매체가 아닌 컴퓨터 판독가능 매체일 수 있고, 또한 명령 실행 시스템, 장치, 또는 디바이스에 의해 사용하기 위한 또는 명령 실행 시스템, 장치, 또는 디바이스와 함께 사용하기 위한 프로그램을 전달, 전파, 전송할 수 있는 컴퓨터 판독가능 매체일 수 있다.
컴퓨터 판독가능 매체 상에 구현되는 프로그램 코드는 적절한 매체, 예를 들어, 무선, 유선, 광섬유 케이블, RF 등, 또는 이것들의 적절한 조합을 사용하여 전송될 수 있다.
본 발명의 측면들을 위한 작업들을 수행하기 위한 컴퓨터 프로그램 코드는 하나 또는 그 이상의 프로그래밍 언어들의 조합으로 기록될 수 있는데, 상기 하나 또는 그 이상의 프로그래밍 언어들의 예들에는, 자바(Java), 스몰토크(Smalltalk), C++ 등과 같은 객체 지향 프로그래밍 언어(object oriented programming language), 및 "C" 프로그래밍 언어 또는 유사 프로그래밍 언어들과 같은 전통적인 절차 프로그래밍 언어들(procedural programming language)이 포함된다. 상기 프로그램 코드는, 독립형 소프트웨어 패키지(stand-alone software package)로서, 사용자의 컴퓨터 상에서 전적으로, 또는 사용자의 컴퓨터 상에서 부분적으로 실행될 수도 있고, 또는 사용자의 컴퓨터 상에서 부분적으로, 그리고 원격 컴퓨터 상에서 부분적으로 또는 원격 컴퓨터 또는 서버 상에서 부분적으로 실행될 수도 있다. 후자의 경우, 상기 원격 컴퓨터는 어떤 유형의 네트워크 - 이 네트워크의 유형의 예에는, LAN(local area network) 또는 WAN(wide area network)가 포함됨 - 를 통해서든 사용자의 컴퓨터에 연결될 수 있으며, 상기 연결은 외부 컴퓨터에 대해 이루어질 수 있다(예를 들어, 인터넷 서비스 제공자(Internet Service Provider)를 사용하여 인터넷을 통해).
본 발명의 측면들은, 본 발명의 측면들에 따른 방법들, 장치(시스템들) 및 컴퓨터 프로그램 제품들의 흐름도들 및/또는 블록도들을 참조하여 이하에서 기술된다. 상기 흐름도들 및/또는 블록도들의 각각의 블록 및 상기 흐름도들 및/또는 블록도들에서의 블록들의 조합들은 컴퓨터 프로그램 명령들에 의해 구현될 수 있음을 이해해야 할 것이다. 이들 컴퓨터 프로그램 명령들은 범용 컴퓨터(general purpose computer) 또는 전용 컴퓨터의 프로세서(special purpose computer) 또는 기타 프로그램가능 데이터 처리 장치로 제공되어, 머신(machine)을 생성해 낼 수 있다. 그리하여, 상기 명령들이 상기 컴퓨터의 프로세서 또는 기타 프로그램가능 데이터 처리 장치를 통해 실행될 경우, 상기 흐름도 및/또는 블록도의 블록 또는 블록들에 명시된 기능들/작용들을 구현하기 위한 수단들을 생성하도록 한다.
이들 컴퓨터 프로그램 명령들은 또한 컴퓨터 판독가능 매체에 저장될 수 있다. 상기 컴퓨터 판독가능 매체는 컴퓨터, 다른 프로그램가능 데이터 처리 장치, 또는 다른 디바이스들이 특정 방식으로 기능하도록 명령하여, 상기 컴퓨터 판독가능 매체에 저장된 명령들이 흐름도 및/또는 블록도의 블록 또는 블록들에 명시된 기능/작용을 구현하는 명령들을 포함하는 제조 물품을 생성하도록 할 수 있다.
상기 컴퓨터 프로그램 명령들은 또한 컴퓨터, 다른 프로그램가능 데이터 처리 장치, 또는 다른 디바이스들 상에 로드되어, 일련의 작업 단계들이 상기 컴퓨터, 다른 프로그램가능 장치 또는 다른 디바이스들 상에서 수행되도록 하여, 컴퓨터로 구현되는 프로세스를 생성하도록 할 수 있다. 그리하여, 상기 컴퓨터 또는 다른 프로그램가능 장치 상에서 실행되는 명령들이 흐름도 및/또는 블록도의 블록 또는 블록들에 명시된 기능들/작용들을 구현하기 위한 프로세스들을 제공하도록 한다.
도면들에서의 흐름도 및 블록도들은 본 발명의 여러 가지 실시예들에 따른 시스템들, 방법들 및 컴퓨터 프로그램 제품들의 가능한 구현들의 아키텍쳐, 기능, 및 작업을 도시한다. 여기서, 상기 흐름도 또는 블록도들에서의 각각의 블록은 모듈, 세그멘트, 또는 코드의 일부분을 나타낼 수 있으며, 상기 명시된 일부분의 기능(들)을 구현하기 위한 하나 또는 그 이상의 실행가능한 명령들을 포함한다. 또한 일부 다른 구현예들에서, 상기 블록에 표시된 기능들은 상기 도면들에 표시된 순서를 벗어나서 발생할 수도 있다는 것을 주목해야 한다. 예를 들어, 연속해서 보여지는 두 개의 블록들은, 사실상, 실질적으로 동시에 실행될 수도 있고, 또는 상기 블록들은 때로는 관련되는 기능에 의존하여, 역순으로 실행될 수도 있다. 또한 블록도들 및 흐름도의 각각의 블록, 및 블록도들 및/또는 흐름도에서의 블록들의 조합들은, 명시된 기능들 또는 작용들, 또는 전용 하드웨어 및 컴퓨터 명령들의 조합들을 수행하는 전용 하드웨어 기반의 시스템들에 의해 구현될 수 있다.
여기서 사용되는 용어는 단지 특정 실시예들을 설명하기 위한 목적으로 사용되는 것이지, 발명의 범위를 한정하려는 의도는 아니다. 여기에 사용되는 바와 같이, 단수 형태의 "하나의", "일", 및 "한" 등의 용어는 사용되는 맥락에서 그렇지 않은 것으로 명확히 표시되어 있지 아니하다면, 복수의 형태들을 포함할 수도 있다. 나아가, "포함하다" 및/또는 "포함하는" 이라는 용어는 본 명세서에서 사용되는 경우, 서술된 특징들, 정수들, 단계들, 작업들, 엘리먼트들, 및/또는 컴포넌트들을 명시하지만, 다른 특징들, 정수들, 단계들, 작업들, 엘리먼트들, 컴포넌트들, 및/또는 이것들의 그룹들 중 하나 또는 그 이상의 존재 또는 추가를 배제하는 것은 아님을 더 이해해야 할 것이다.
이하의 청구항들에서의, 대응하는 구조들, 재료들, 작용들, 및 모든 수단들 또는 단계 플러스 기능 엘리먼트들(stap plus function elements)은 구체적으로 청구되는 다른 청구된 엘리먼트들과 함께 그 기능을 수행하기 위한 구조, 재료, 또는 작용을 포함하려는 의도이다. 본 발명에 관한 기술은 예시 및 설명의 목적들을 위해 제시되었으며, 개시되는 형태로 본 발명의 범위를 한정하거나, 개시되는 형태로 본 발명의 실시예들을 총 망라하려는 의도는 아니다. 당해 기술 분야에서 통상의 기술을 가진 자들이라면, 본 발명의 범위 및 사상을 벗어나지 않고서, 많은 변형 예들 및 변경 예들을 분명히 생각해 낼 수 있을 것이다. 실시예는 발명의 원리들 및 실제 어플리케이션을 가장 잘 설명하기 위해, 또한 고려되는 특정 사용에 적합하게 여러 가지 변형 예들을 갖는 여러 가지 실시예들에 대해 당해 기술 분야에서 통상의 기술을 가진 자들이 발명을 이해할 수 있도록 하기 위해 선택되고 기술되었다.
도 1은 본 발명의 일 실시예를 이용하는 데이터 처리 시스템의 일 예를 도시한다. 이 시스템은 호스트 컴퓨터들(102)의 클러스터에 동작적으로 결합된 복수의 클라이언트들(101)을 포함한다. 호스트 컴퓨터들(102) 중 어떤 것으로부터든지 데이터베이스(107)에 대한 일관된 공유 스토리지 접근(106)을 제공하기 위해, 호스트 컴퓨터들(102)은 서로 협력한다. 데이터는 표 형태로 데이터베이스에 저장된다. 각각의 표는 복수의 페이지들을 포함하고, 각각의 페이지는 복수의 행들(rows) 또는 레코드들(records)을 포함한다. 클라이언트들(101)은 호스트 컴퓨터들(102) 중 어떤 것에든 연결되어 싱글 데이터베이스를 볼 수 있다. 락 관리자(108)는 네트워크를 통해 수신된 락 요청들을 관리하고, 호스트 컴퓨터들(102) 전체에 걸쳐 락을 푼다. 이 실시예에서, 락 관리자(108)는 중앙식 또는 글로벌 락 관리자이다.
각각의 호스트 컴퓨터(102)는 프로세서(103) 및 컴퓨터 판독가능 매체(104)에 동작적으로 결합된다. 컴퓨터 판독가능 매체(104)는 본 발명의 방법을 구현하기 위한 컴퓨터 판독가능 프로그램 코드(105)를 저장한다. 프로세서(103)는 본 발명의 여러 가지 실시예들에 따라 락 관리자(108)로 송신되는 메시지들을 관리하기 위해 프로그램 코드(105)를 실행한다.
데이터베이스(107) 내의 데이터가 호스트 컴퓨터(102)에 의해 변경(즉, 삽입, 갱신, 또는 삭제를 통해)되고 있을 경우, 호스트 컴퓨터(102)는 변경되거나 추가되고 있는 행(들)에 그리고 상기 행들이 발견되는 페이지(들) 상에 글로벌 락 관리자(108)로부터 락을 획득한다. 상기 행들 및 페이지들의 이러한 락킹(locking)은, 상기 변경 또는 추가 동안 다른 호스트 컴퓨터들에 의한 접근을 막아 데이터 동시성(data concurrency) 문제들을 방지한다. 호스트 컴퓨터(102)와 락 관리자(108) 사이의 락킹 트래픽의 량을 최소화하고자, 본 발명에 따른 몇 가지 방법들은, 다수의 락 요청들을 싱글 메시지로 결합하거나 락들이 요청되는 빈도를 감소시키기 위해 사용될 수 있는데, 이는 이하에서 상세히 기술된다. 일 실시예에서, 상기 방법은 호스트 컴퓨터들(102) 중 하나 또는 그 이상에서의 프로세서(103)에 의해 실행되는 컴퓨터 판독가능 프로그램 코드(도 1의 105)에 의해 구현된다.
락들의
프리페칭(
Pre
-
Fetching
)
본 발명의 방법의 일 실시예에서, 락 요청들의 수는 락들을 프리페치함으로써 감소된다. 도 2는 락들을 프리페치함으로써 락 요청들을 단일 메시지로 결합하기 위한 방법의 일 실시예를 도시하는 흐름도이다. 데이터베이스(107) 상에 데이터를 변경하기 위한 작업이 호출된다고 결정되는데(201), 여기서 상기 작업은 다수의 락들을 요구한다. 락들이 프리페치될 수 있는 몇 가지 작업들은, 행 갱신 작업들(202); 행 삭제 작업들(203); 광범위한 스캔들(large scans)(204); 및 행 삽입 작업들(205)을 포함한다. 상기 작업을 위해 요구되는 락들 및 장래에 요구될 락들이 결정된다(206). 상기 작업을 위해 요구되는 락들 및 장래에 요구될 락들을 위해 락 관리자(108)에게 네트워크를 통해 단일 메시지가 송신된다(207). 따라서 이들 장래의 락들은 "프리페치"되고, 이들 락들이 상기 작업을 수행하는데 필요하게 될 경우, 락 관리자(108)로의 분리된 메시지는 요구되지 않는다.
행 갱신 작업에서
락들
프리페치
데이터베이스(107) 내의 행을 갱신하는 작업은 전형적으로 그 작업을 위한 다수의 락들을 요구한다. 특히, 요구되는 락들은 갱신될 행에 관한 논리적 락(logical lock) 및 그 행이 저장되는 페이지에 관한 물리적 락(physical lock)을 포함한다. 본 발명의 방법들이 없는 경우, 갱신될 행의 위치를 찾아낸 후, 그 행에 관한 락을 위한 요청을 갖는 메시지가 락 관리자(108)에게 송신된다. 그 행 갱신을 수행하기 위해 그 행이 존재하는 페이지가 접근되는 경우, 그 페이지에 관한 락을 위한 요청을 갖는 또 다른 메시지가 락 관리자(108)에게 송신된다. 따라서, 두 개의 락 요청 메시지들이 송신된다.
본 발명의 방법에 따르면, 그 행을 위한 락 및 그 페이지를 위한 락 둘 모두가 단일 메시지로 요청된다. 도 3은 행 갱신 작업들을 위해 락 요청들을 단일 메시지로 결합하기 위한 방법의 일 실시예를 도시하는 흐름도이다. 데이터베이스(107) 상에 행 갱신 작업이 호출된다고 결정된다(301). 갱신될 행을 위한 행 식별자(row identifier)가 결정된다(302). 그런 다음, 갱신될 행을 포함하는 페이지를 위한 페이지 식별자(page identifier)가 상기 행 식별자로부터 결정된다(303). 이 실시예에서, 상기 페이지 식별자는 상기 행 식별자 내에 인코딩된다. 이러한 사실은 상기 행 식별자로부터 상기 페이지 식별자를 결정함으로써 레버리지된다. 이 실시예에서, 그 페이지에 관한 락이 또한 요구될 것인지의 여부는 그 행 락(row lock)의 모드(mode)로부터 결정될 수 있다. 예를 들어, 만약 상기 행 락의 모드가 "공유(shared)"(즉 읽기 전용(read-only))라면, 상기 페이지에 관한 락은 요구되지 않는다. 만약 상기 행 락의 모드가 "독점적(exclusive)"이라면, 상기 페이지에 관한 락이 요구될 것이다. 상기 행과 페이지 식별자들 모두가 결정되면, 상기 행 식별자 및 상기 페이지 식별자를 위한 락들을 요청하기 위해, 락 관리자(108)에게 네트워크를 통해 단일 메시지가 송신된다(304). 따라서, 하나의 락 요청 메시지의 절약이 실현된다.
행 삭제 작업에서
락들
프리페치
행 갱신에서와 같이, 행 삭제 작업도 또한 전형적으로 다수의 락들을 요구한다. 행 삭제에서, 행에 대한 키가 저장되는 모든 인덱스들 뿐만이 아니라 그 실제 행이 제거되어야 한다. 본 발명의 방법이 없는 경우, 그 행에 관한 락을 위해 하나의 메시지가 락 관리자(108)에게 송신되고, 그 행을 포함하는 페이지에 관한 락을 위해 또 하나의 메시지가 락 관리자(108)에게 송신되며, 그 행의 인덱스 키(index key)를 포함하는 페이지에 관한 락을 위해 제3의 메시지가 락 관리자(108)에게 송신된다. 따라서, 세 개의 락 요청 메시지들이 송신된다.
본 발명의 방법에 따르면, 상기 행을 위한 락, 상기 행을 포함하는 페이지를 위한 락, 및 상기 행의 인덱스 키를 포함하는 페이지를 위한 락이, 단일 메시지로 요청된다. 이 실시예에서, 표 인덱스의 검색은 락들의 프리페칭을 위해 레버리지된다. 도 4는 행 삭제 작업들을 위해 락 요청들을 단일 메시지로 결합하기 위한 방법의 일 실시예를 도시하는 흐름도이다. 데이터베이스(107) 상에 행 삭제 작업이 호출된다고 결정된다(401). 삭제될 행을 위한 행 식별자를 찾기 위해 표 인덱스 대상(table index object)이 검색된다(402). 즉 상기 검색은 삭제될 행에 대한 키를 포함하는 표 인덱스에서 행을 위한 검색이다. 상기 행 식별자로부터, 삭제될 행을 포함하는 페이지를 위한 페이지 식별자가 결정된다(403). 또한 삭제될 행을 위한 인덱스 키(index key)를 포함하는 표 인덱스에서 페이지를 위한 인덱스 페이지 식별자가 결정된다(404). 그런 다음, 상기 행 식별자, 상기 페이지 식별자, 및 인덱스 페이지 식별자(405)를 위한 락들을 요청하기 위해, 락 관리자(108)에게 네트워크를 통해 단일 메시지가 송신된다. 따라서, 두 개의 락 요청 메시지들의 절약이 실현된다.
광범위한 스캔들(
large
scans
)에서
락들
프리페치
행 변경 작업은 다수의 행들이 처리되는 광범위한 스캔들을 수반할 수 있다. 본 발명의 방법이 없는 경우, 스캔될 각각의 행을 위한 행 락이 락 관리자(108)에게 분리된 메시지들로 요청된다. 본 발명의 방법에 따르면, 상기 스캔을 위해 각각의 행을 개별적으로 락하지 않고, 상기 다수의 행들을 위한 락 요청들이 단일 메시지로 결합된다. 도 5는 광범위한 스캔들을 위해 락 요청들을 단일 메시지로 결합하기 위한 방법의 일 실시예를 도시하는 흐름도이다. 데이터베이스(107) 상에 행 변경 작업이 호출된다고 결정된다(501). 상기 작업을 위해 복수의 행들의 스캔이 요구된다고 결정된다(502). 스캔될 복수의 행들을 위한 복수의 행 식별자들이 결정된다(503). 그런 다음, 상기 복수의 행 식별자들을 위한 락들을 요청하기 위해, 락 관리자(108)에게 네트워크를 통해 단일 메시지가 송신된다(504). 따라서, 많은 락 요청 메시지들의 절약이 실현된다.
도 5를 참조하여 설명되는 실시예는, 위에서 기술된 행 락의 모드에 기초하여 락들을 프리페치하는 것과 조합될 수 있다. 예를 들어, 독점 모드(exclusive mode)에서 행 락을 획득하는 것은 상기 페이지 락의 프리페칭을 촉발할 수도 있고, 그 결과 도 3 및 5를 참조하여 설명된 실시예들의 조합이 될 수 있다. 그러나, 읽기 전용을 위한 공유 모드에서 행 락을 획득하는 것은, 도 5를 참조하여 위에서 기술되는 바와 같이, 상기 행 락 요청들을 단지 조합하는 결과만을 가져올 수 있다.
행 삽입 작업에서
락들
프리페치
행을 표에 첨부함으로써, 그 행이 데이터베이스 내에 삽입될 경우, 상기 표의 분리된 첨부 영역은, 상기 행들이 실제 삽입되기 전에 새로운 삽입 페이지들의 형태로 각각의 노드를 위해 생성된다. 본 발명의 방법이 없는 경우, 상기 행 삽입 작업이 실제로 수행될 경우 행 락들 및 페이지 락들이 획득된다. 따라서, 분리된 메시지들은 상기 행 삽입을 위해 요구되는 페이지 락들 및 행 락들을 위해 락 관리자(108)에게 송신된다.
본 발명의 방법에 따르면, 상기 새로운 삽입 페이지들에서의 행들 및 페이지들을 위한 락 요청들은 행의 실제 삽입 이전에 단일 메시지로 결합된다. 도 6은 새로운 삽입 페이지들을 위해 락 요청들을 단일 메시지로 결합하기 위한 방법의 일 실시예를 도시하는 흐름도이다. 데이터베이스(107) 내의 새로운 삽입 페이지들 - 각각의 페이지는 복수의 행들을 포함함 - 은 어떤 행 삽입 작업이 수행되기 전에 노드에 할당된다(601). 이 할당 프로세스(allocation process)는 상기 새로운 삽입 페이지들을 위한 행 락들 및 페이지 락들을 프리페치함에 의해 레버리지된다. 상기 삽입 페이지들 내의 각각의 행을 위한 상기 행 식별자들이 결정된다(602). 상기 행 식별자로부터 각각의 새로운 삽입 페이지를 위한 페이지 식별자들이 결정된다(603). 그런 다음, 어떤 삽입 작업이 수행되기 전에 상기 행 식별자들 및 페이지 식별자들을 위한 락들을 위해, 단일 요청이 락 관리자(108)에게 네트워크를 통해 송신된다(604). 행 삽입 작업이 상기 삽입 페이지들 중 하나 내에 실제로 수행되는 경우, 상기 행 및 페이지 락들은 다시 요청될 필요가 없고, 따라서 락 요청 메시지에 관한 절약이 실현된다.
이 실시예에서, 상기 프리페치된 락들은 상기 락들을 요청하는 호스트 컴퓨터(102)에 대해 로컬(local) 관계에 있는 메모리에 보존된다. 메모리 사용량 문제들을 방지하기 위해, 클린업(clean-up) 알고리즘이 사용될 수 있는데, 상기 클린업 알고리즘에서, 만약 특정 시구간(period of time) 내에 어떠한 행도 삽입되지 않았다면, 메모리 내의 락들은 풀린다.
작업의 이중 실행(
double
execution
)을 통한
락들
조기 획득
본 발명의 방법의 또 다른 실시예에서, 락 요청의 수는 하나 보다는 오히려 두 개의 실행들에서 행 변경 작업을 수행함으로써 감소된다. 제1 실행에서, 상기 행 변경은 실제로 수행되지 않고 어떠한 락들도 획득되지 않는다. 그 대신, 상기 제1 실행은 상기 작업을 위해 어떤 락들이 필요할 것인지를 결정한다. 제2 실행에서, 상기 행 변경이 수행되고 상기 락들이 획득된다.
도 7은 작업의 두 개로 된 실행을 통해 락들을 조기 획득하기 위한 방법의 일 실시예를 도시하는 흐름도이다. 데이터베이스(107) 상에 행 변경 작업이 호출된다고 결정된다(701). 상기 제1 실행에서, 실제 행 변경을 수행함이 없이, 그 작업에 의해 변경될 복수의 행들을 위한 행 식별자들을 찾기 위해 인덱스 표가 검색된다(702). 상기 행 식별자들로부터, 변경될 복수의 행들을 포함하는 복수의 페이지들을 위한 페이지 식별자들이 결정된다(703). 변경될 복수의 행들을 위한 상기 인덱스 키를 포함하는 인덱스 표에서 상기 페이지들을 위한 상기 복수의 인덱스 페이지 식별자들이 또한 결정된다(704). 상기 제2 실행에서, 상기 행 식별자들, 페이지 식별자들, 및 인덱스 페이지 식별자들을 위한 락들을 위해, 단일 요청이 락 관리자(108)에게 네트워크를 통해 송신된다(705). 그런 다음, 상기 행 변경 작업이 수행된다(706).
상기 행 변경의 실제 수행에 앞서 상기 제1 작업을 수행함으로써, 상기 작업을 위해 요구될 것 같은 모든 락들이 식별될 수 있고, 그런 다음, 이들 락들을 위한 요청들은 단일 메시지로 결합될 수 있다. 비록 상기 작업이 두 개의 실행들로 수행되고, 그래서 만약 상기 작업이 하나의 실행에서 수행된다면 그보다 더 많은 리소스들을 요구하겠지만, 락 관리자(108)에게 메시지들의 감소에서의 비용 절약은 이러한 추가 리소스 소비보다 더 클 것이다.
락들의 조기 획득을 위한 방법의 또 다른 실시예는 자유 공간 검색(free space searching)과 관련된다. 자유 공간 검색에서, 페이지들에서 행이 삽입될 수 있는 빈 공간들은 상기 행의 실제 삽입에 앞서 발견된다. 본 발명의 방법에서, 이러한 검색 프로세스는 상기 빈 공간들을 포함하는 페이지들 및 행들을 위한 락들을 프리페치함에 의해 레버리지된다. 도 8은 자유 공간 검색에서 락들을 조기 획득하기 위한 방법의 일 실시예를 도시하는 흐름도이다. 데이터베이스(107) 상에 행 삽입 작업이 호출된다고 결정된다(801). 데이터베이스(107)에서 하나 또는 그 이상의 표들 내에서 상기 행이 삽입될 수 있는 복수의 빈 공간들이 결정된다(802). 상기 빈 공간들 내의 행들을 위한 행 식별자들이 결정된다(803). 상기 행 식별자들로부터, 복수의 잠재적인 빈 공간들을 포함하는 페이지들을 위한 페이지 식별자들이 결정된다(804). 그런 다음, 상기 행 식별자들 및 상기 페이지 식별자들을 위한 락들을 위해, 단일 요청이 락 관리자(108)에게 네트워크를 통해 송신된다(805). 그런 다음, 행 식별자 및 상기 행이 삽입되는 슬롯에 대응하는 페이지 식별자를 위한 락들을 위해 락 관리자(108)에게 요청을 송신함이 없이, 상기 행 삽입 작업이 수행된다(806). 비록 이 실시예에서는 상기 행 삽입 작업을 위해 실제 필요한 것보다 더 많은 락들이 획득되고, 이들 락들이 메모리에 보존되어야 하지만, 상기 락 관리자(108)에게 메시지들에서의 절약은 이러한 추가의 리소스 소비보다 더 크다.
불공평한 락킹(
unfair
locking
)
본 발명의 방법의 또 다른 실시예에서, 락 관리자가 엄격하게 공평한 방법(fair manner)으로 락들을 부여하지 않음으로써, 락 요청들의 수는 감소된다. 예를 들어, 사용자 1 및 사용자 2가 호스트 컴퓨터 A에 결합된다고 가정하자. 사용자 1, 사용자 2, 및 사용자 3 각각은 동일한 락을 요청하는 메시지를 송신한다. 상기 락이 요청되는 순서는 {사용자 1, 사용자 3, 사용자 2}이다. 락들이 엄격하게 공평한 방법으로 부여될 경우, 락 관리자(108)는 상기 락 요청이 만들어진 순서에 기초하여 상기 락을 순차적으로 부여한다. 따라서, 상기 락은 먼저 호스트 컴퓨터 A에서 사용자 1에게 부여되고, 그런 다음 호스트 컴퓨터 B에서 사용자 3에게 부여되고, 그런 다음 호스트 컴퓨터 A에서 사용자 2에게 부여된다. 엄격하게 공평한 접근법에서, 세 개의 메시지들은 락 관리자(108)에게 송신된다.
불공평한 락킹 접근법에서는, 상기 사용자들이 그들의 락 요청들을 송신하는 호스트 컴퓨터에 기초한 순서로 락 요청들이 부여된다. 도 9는 불공평한 방법으로 락들을 부여함으로써 락 트래픽을 감소시키기 위한 방법의 일 실시예를 보여주는 흐름도이다. 제1 호스트 컴퓨터는 제1 호스트 컴퓨터(102)에 동작적으로 결합된 사용자들에 의해 요구되는 락을 위해 락 관리자(108)에게 네트워크를 통해 단일 메시지를 송신한다(901). 제2 호스트 컴퓨터는 제2 호스트 컴퓨터에 동작적으로 결합된 하나 또는 그 이상의 사용자들에 의해 요구되는 동일한 락을 위해 락 관리자(108)에게 네트워크를 통해 단일 메시지를 송신한다(902). 상기 락은 락 관리자(108)에 의해 상기 제1 호스트 컴퓨터에게 부여된다(903). 그런 다음, 상기 제1 호스트 컴퓨터는 상기 락을 풀기 전에 상기 락의 소유권을 상기 락을 요청한 상기 제1 호스트 컴퓨터에 동작적으로 결합된 사용자들 각각에게 부여한다(905). 상기 제1 호스트 컴퓨터가 상기 락을 푼 후(905), 상기 락은 락 관리자(108)에 의해 상기 제2 호스트에게 부여된다(906).
위의 예에 상기 불공평한 락킹 접근법을 적용하면, 호스트 컴퓨터 A는 사용자 1 및 사용자 2에 의해 요청되는 락을 위해 락 관리자(108)에게 네트워크를 통해 단일 메시지를 송신한다(901). 호스트 컴퓨터 B는 사용자 3에 의해 요청되는 동일한 락을 위해 락 관리자(108)에게 네트워크를 통해 단일 메시지를 송신한다(902). 상기 락은 호스트 컴퓨터 A에게 부여된다(903). 호스트 컴퓨터 A는 상기 락을 풀기 전에 사용자 1에게 상기 락의 소유권을 부여하고, 그런 다음 사용자 2에게 소유권을 부여한다(904). 상기 락이 호스트 컴퓨터 A에 의해 풀린 후(905), 상기 락은 호스트 컴퓨터 B에게 부여된다(906). 이 예에서, 락 관리자(108)로의 메시지는 하나로 감소된다.
락이 매우 많은 수의 사용자들을 가지며, 호스트 컴퓨터 A 및 호스트 컴퓨터 B 둘 모두에 결합된 예를 고려하자. 만약 소유권이 상기 락을 요청한 사용자들 모두에게 부여될 때까지 항상 호스트 컴퓨터 A가 상기 락의 소유권을 유지하도록 허용된다면, 호스트 컴퓨터 B에서의 사용자들은 오랜 시간 동안 락을 부여받을 수 없을 수 있다. 이러한 상황을 방지하기 위해, 상기 방법은, 호스트 컴퓨터 A에게 상기 락을 풀도록 요구하기 전에 정해진 수의 요청들 및 사용자들을 위해, 또는 정해진 시구간 동안, 호스트 컴퓨터 A에게 상기 락을 계속해서 부여할 수 있다.
Claims (25)
- 공유 디스크 데이터베이스를 갖는 데이터 처리 시스템에서 락 통신들(lock communications)을 감소시키기 위한 방법에 있어서, 상기 방법은:
상기 데이터베이스 상에서 데이터를 변경하기 위해 다수의 락들(locks)을 요구하는 작업(operation)이 호출됨(invoked)을 결정하는 단계;
상기 작업을 위해 요구되는 하나 또는 그 이상의 락들 및 장래에 요구될 하나 또는 그 이상의 락들을 결정함으로써 어떤 락들을 프리-페치(pre-fetch)할 것인지를 결정하는 단계 ― 상기 작업은 행(a row)에서 수행되고, 상기 락들은 상기 행에서 작업을 수행하지 않고 결정됨 ―; 및
상기 작업을 위해 요구되는 락들 및 장래에 요구될 락들을 요청하는 단일 메시지를 네트워크를 통해 상기 데이터베이스의 락 관리자에게 송신하는 단계 ― 상기 하나 또는 그 이상의 락들은 상기 단일 메시지의 결과로서 프리-페치되고, 락들의 요청 횟수는 상기 락들을 프리-페치함으로써 감소됨 ― 를 포함하는
방법. - 청구항 1에 있어서, 상기 작업은 행(row) 갱신 작업을 포함하고,
상기 작업을 위해 요구되는 락들 및 장래에 요구될 락들을 결정하는 단계는:
갱신될 각각의 행을 위한 행 식별자(row identifier)를 결정하는 단계, 및 상기 행 식별자로부터 갱신될 행을 포함하는 페이지를 위한 페이지 식별자(page identifier)를, 각각의 행 식별자에 대해, 결정하는 단계를 포함하며,
상기 작업을 위해 요구되는 락들 및 장래에 요구될 락들을 위해 네트워크를 통해 단일 메시지를 상기 데이터베이스의 락 관리자에게 송신하는 단계는:
각각의 행 식별자를 위한 락 및 각각의 페이지 식별자를 위한 페이지 락을 위해 네트워크를 통해 단일 메시지를 상기 데이터베이스의 락 관리자에게 송신하는 단계를 포함하는
방법. - 청구항 1에 있어서, 상기 작업은 행(row) 삭제 작업을 포함하고,
상기 작업을 위해 요구되는 락들 및 장래에 요구될 락들을 결정하는 단계는:
삭제될 각각의 행을 위한 행 식별자를 표 인덱스(table index)에서 검색하는 단계, 삭제될 행을 포함하는 페이지를 위한 페이지 식별자를, 각각의 행 식별자에 대해, 결정하는 단계, 및 삭제될 행을 위한 인덱스 키(index key)를 포함하는 표 인덱스에서 각각의 페이지를 위한 인덱스 페이지 식별자를 결정하는 단계를 포함하며,
상기 작업을 위해 요구되는 락들 및 장래에 요구될 락들을 위해 네트워크를 통해 단일 메시지를 상기 데이터베이스의 락 관리자에게 송신하는 단계는:
각각의 행 식별자, 각각의 페이지 식별자, 및 각각의 인덱스 페이지 식별자를 위한 락들을 위해 네트워크를 통해 단일 메시지를 상기 데이터베이스의 락 관리자에게 송신하는 단계를 포함하는
방법. - 청구항 1에 있어서, 상기 작업은 행(row) 변경 작업을 포함하고,
상기 작업을 위해 요구되는 락들 및 장래에 요구될 락들을 결정하는 단계는:
복수의 행들의 스캔이 상기 작업을 위해 요구되는지를 결정하는 단계, 및 스캔될 상기 복수의 행들을 위한 복수의 행 식별자들을 결정하는 단계를 포함하며,
상기 작업을 위해 요구되는 락들 및 장래에 요구될 락들을 위해 네트워크를 통해 단일 메시지를 상기 데이터베이스의 락 관리자에게 송신하는 단계는:
상기 복수의 행 식별자들을 위한 복수의 락들을 위해 네트워크를 통해 단일 메시지를 상기 데이터베이스의 락 관리자에게 송신하는 단계를 포함하는
방법. - 청구항 1에 있어서,
상기 데이터베이스 상에서 데이터를 변경하기 위해 다수의 락들을 요구하는 작업이 호출됨을 결정하는 단계는:
어떤 행 삽입 작업이 수행되기 전에 상기 데이터베이스의 노드를 위해 하나 또는 그 이상의 새로운 삽입 페이지들 ― 각각의 새로운 삽입 페이지는 복수의 행들(rows)을 포함함 ― 을 할당하는 단계를 포함하고,
상기 작업을 위해 요구되는 락들 및 장래에 요구될 락들을 결정하는 단계는:
상기 새로운 삽입 페이지들 내의 복수의 행들을 위한 복수의 행 식별자들을 결정하는 단계, 및 상기 새로운 삽입 페이지들을 위해 복수의 페이지 식별자들을 상기 행 식별자로부터 결정하는 단계를 포함하고, 그리고
상기 작업을 위해 요구되는 락들 및 장래에 요구될 락들을 위해 네트워크를 통해 단일 메시지를 상기 데이터베이스의 락 관리자에게 송신하는 단계는:
어떤 행 삽입 작업이 상기 새로운 삽입 페이지들 상에 수행되기 전에, 상기 복수의 행 식별자들 및 상기 복수의 페이지 식별자들을 위한 락들을 위해 네트워크를 통해 단일 메시지를 상기 데이터베이스의 락 관리자에게 송신하는 단계를 포함하는
방법. - 청구항 1에 있어서, 상기 작업은 행(row) 변경을 포함하고,
상기 작업을 위해 요구되는 하나 또는 그 이상의 락들 및 장래에 요구될 하나 또는 그 이상의 락들을 결정하는 단계는:
상기 행 변경 작업의 제1 실행(first execution)에서, 상기 행 변경 작업을 위해 요구되는 락들을 상기 행 변경을 수행함이 없이 결정하는 단계를 포함하며,
상기 제1 실행은:
상기 행 변경 작업에 의해 변경될 하나 또는 그 이상의 행들을 위한 하나 또는 그 이상의 행 식별자들을 표 인덱스(table index)에서 검색하는 단계;
상기 행 변경 작업에 의해 변경될 행들을 포함하는 하나 또는 그 이상의 페이지들을 위한 하나 또는 그 이상의 페이지 식별자들을 상기 행 식별자들로부터 결정하는 단계; 및
상기 행 변경 작업에 의해 변경될 행들을 위한 인덱스 키(index key)를 포함하는 표 인덱스 내의 하나 또는 그 이상의 페이지들을 위한 하나 또는 그 이상의 인덱스 페이지 식별자들을 결정하는 단계를 포함하고,
상기 작업을 위해 요구되는 락들 및 장래에 요구될 락들을 위해 네트워크를 통해 상기 데이터베이스의 락 관리자에게 단일 메시지를 송신하는 단계는:
상기 행 변경 작업의 제2 실행에서, 상기 행 식별자들, 상기 페이지 식별자들, 및 상기 인덱스 페이지 식별자들을 위한 락들을 위해 네트워크를 통해 단일 메시지를 상기 데이터베이스의 락 관리자에게 송신하는 단계; 및
상기 행 변경을 수행하는 단계를 포함하는
방법. - 청구항 1에 있어서, 상기 작업은 행(row) 삽입 작업을 포함하고,
상기 작업을 위해 요구되는 하나 또는 그 이상의 락들 및 장래에 요구될 하나 또는 그 이상의 락들을 결정하는 단계는:
상기 데이터베이스의 하나 또는 그 이상의 표들 내에서 행이 삽입될 수 있는 복수의 빈 공간들을 결정하는 단계;
상기 빈 공간들 내의 복수의 행들을 위한 복수의 행 식별자들을 결정하는 단계; 및
상기 복수의 빈 공간들을 포함하는 하나 또는 그 이상의 페이지들을 위한 하나 또는 그 이상의 페이지 식별자들을 상기 복수의 행 식별자들로부터 결정하는 단계를 포함하며,
상기 작업을 위해 요구되는 락들 및 장래에 요구될 락들을 위해 네트워크를 통해 단일 메시지를 상기 데이터베이스의 락 관리자에게 송신하는 단계는:
상기 복수의 행 식별자들 및 상기 복수의 페이지 식별자들을 위한 락들을 위해 네트워크를 통해 단일 메시지를 상기 데이터베이스의 락 관리자에게 송신하는 단계; 및
상기 복수의 행 식별자들, 및 상기 행이 삽입되는 빈 공간들 내의 슬롯에 대응하는 상기 복수의 페이지 식별자들을 위한 락들을 위해 락 관리자에게 새로운 요청을 송신함이 없이 상기 행 삽입 작업을 수행하는 단계를 포함하는
방법. - 공유 데이터베이스를 갖는 데이터 처리 시스템에서 락 통신들(lock communications)을 감소시키기 위한 방법을 수행하도록 구성된 컴퓨터 판독가능 프로그램 코드를 저장하는 컴퓨터 판독가능 스토리지 매체로서, 상기 방법은:
상기 데이터베이스 상에서 데이터를 변경하기 위해 다수의 락들(locks)을 요구하는 작업(operation)이 호출됨(invoked)을 결정하는 단계;
상기 작업을 위해 요구되는 하나 또는 그 이상의 락들 및 장래에 요구될 하나 또는 그 이상의 락들을 결정함으로써 어떤 락들을 프리-페치(pre-fetch)할 것인지를 결정하는 단계 ― 상기 작업은 행(a row)에서 수행되고, 상기 락들은 상기 행에서 작업을 수행하지 않고 결정됨 ―; 및
상기 작업을 위해 요구되는 락들 및 장래에 요구될 락들을 요청하는 단일 메시지를 네트워크를 통해 상기 데이터베이스의 락 관리자에게 송신하는 단계 ― 상기 하나 또는 그 이상의 락들은 상기 단일 메시지의 결과로서 프리-페치되고, 락들의 요청 횟수는 상기 락들을 프리-페치함으로써 감소됨 ― 를 포함하는
컴퓨터 판독가능 스토리지 매체. - 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 공유 디스크 데이터베이스를 갖는 데이터 처리 시스템에서,
데이터베이스;
상기 데이터베이스의 락 관리자; 및
컴퓨터 판독가능 스토리지 매체를 포함하는 컴퓨터 ― 상기 컴퓨터 판독가능 스토리지 매체는 그 내부에 구현되는 컴퓨터 판독가능 프로그램 코드를 가짐 ― 를 포함하되, 상기 컴퓨터 판독가능 프로그램 코드는:
상기 데이터베이스 상에 데이터를 변경하기 위한 작업(operation) ― 상기 작업은 다수의 락들(locks)을 요구함 ― 이 호출됨을 결정하고,
상기 작업을 위해 요구되는 하나 또는 그 이상의 락들 및 장래에 요구될 하나 또는 그 이상의 락들을 결정하고,
상기 작업을 위해 요구되는 락들 및 장래에 요구될 락들을 위해 상기 데이터베이스의 락 관리자에게 네트워크를 통해 단일 메시지를 송신하도록 구성되는
데이터 처리 시스템. - 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 제1 호스트 컴퓨터 및 제2 호스트 컴퓨터를 포함하는 공유 디스크 데이터베이스를 갖는 데이터 처리 시스템에서의 락 통신들(lock communications)을 감소시키기 위한 방법에 있어서,
상기 제1 호스트 컴퓨터에 동작적으로 결합된 복수의 사용자들에 의해 요청되는 락을 위해 상기 데이터베이스의 락 관리자에게 단일(single) 메시지를 상기 제1 호스트 컴퓨터에 의해 송신하는 단계;
상기 제2 호스트 컴퓨터에 동작적으로 결합된 하나 또는 그 이상의 사용자들에 의해 요청되는 동일한 락을 위해 상기 데이터베이스의 락 관리자에게 단일 메시지를 상기 제2 호스트 컴퓨터에 의해 송신하는 단계;
상기 락의 소유권의 부여를 상기 제1 호스트 컴퓨터에 의해 수신하는 단계;
상기 락을 풀기 전에, 상기 락의 소유권을 상기 락을 요청한 상기 제1 호스트 컴퓨터에 동작적으로 결합된 각각의 사용자에게 상기 제1 호스트 컴퓨터에 의해 부여하는 단계;
상기 제1 호스트 컴퓨터에 의해 상기 락을 푸는 단계; 및
상기 락의 소유권의 부여를 상기 제2 호스트 컴퓨터에 의해 수신하는 단계를 포함하는
방법. - 삭제
- 삭제
- 삭제
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/626,714 US8666958B2 (en) | 2009-11-27 | 2009-11-27 | Approaches to reducing lock communications in a shared disk database |
US12/626,714 | 2009-11-27 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20110059532A KR20110059532A (ko) | 2011-06-02 |
KR101634403B1 true KR101634403B1 (ko) | 2016-07-08 |
Family
ID=44069603
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020100115390A KR101634403B1 (ko) | 2009-11-27 | 2010-11-19 | 공유 디스크 데이터베이스 시스템에서 락 통신들을 감소시키기 위한 접근 방법들 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8666958B2 (ko) |
KR (1) | KR101634403B1 (ko) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9767136B2 (en) | 2010-03-31 | 2017-09-19 | Salesforce.Com, Inc. | System, method and computer program product for maintaining data stored in a data structure |
KR101271324B1 (ko) | 2011-06-20 | 2013-06-05 | 주식회사 만도 | 전동식 동력 보조 조향장치의 감속기 |
KR101632364B1 (ko) * | 2011-08-10 | 2016-07-01 | 엔에이치엔엔터테인먼트 주식회사 | 인터넷 공유 자원에 대한 동기화를 위한 방법 및 장치 |
US9442913B2 (en) | 2014-01-30 | 2016-09-13 | International Business Machines Corporation | Using parallel insert sub-ranges to insert into a column store |
US11074273B2 (en) * | 2014-03-07 | 2021-07-27 | International Business Machines Corporation | Framework for continuous processing of a set of documents by multiple software applications |
US20160092488A1 (en) * | 2014-09-26 | 2016-03-31 | Futurewei Technologies, Inc. | Concurrency control in a shared storage architecture supporting on-page implicit locks |
KR101642027B1 (ko) * | 2016-06-13 | 2016-07-25 | 엔에이치엔엔터테인먼트 주식회사 | 인터넷 공유 자원에 대한 동기화를 위한 방법 및 장치 |
US9959055B2 (en) * | 2016-06-30 | 2018-05-01 | Hewlett Packard Enterprise Development Lp | Placement of a processing unit in unfair lock mode in response to a queue in a fair lock mode |
US11520769B1 (en) | 2021-06-25 | 2022-12-06 | International Business Machines Corporation | Block level lock on data table |
US20240184766A1 (en) * | 2022-12-01 | 2024-06-06 | Huawei Cloud Computing Technologies Co., Ltd. | Method and apparatus for fine-grained hierarchical locking in a multi-master database system |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5327556A (en) | 1991-02-15 | 1994-07-05 | International Business Machines Corporation | Fast intersystem page transfer in a data sharing environment with record locking |
US5551046A (en) | 1991-06-14 | 1996-08-27 | International Business Machines Corporation | Method for non-hierarchical lock management in a multi-system shared data environment |
US6349310B1 (en) | 1999-07-06 | 2002-02-19 | Compaq Computer Corporation | Database management system and method for accessing rows in a partitioned table |
US20090187545A1 (en) | 2008-01-21 | 2009-07-23 | Kenichi Kaku | Method and apparatus for data processing with index search |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6606626B1 (en) * | 1998-10-20 | 2003-08-12 | Sybase, Inc. | Database system with lock manager enhancement for improving concurrency |
US6920454B1 (en) * | 2000-01-28 | 2005-07-19 | Oracle International Corporation | Techniques for DLM optimization with transferring lock information |
US6965893B1 (en) * | 2000-12-20 | 2005-11-15 | Oracle International Corporation | Techniques for granting shared locks more efficiently |
US7325064B2 (en) * | 2001-07-17 | 2008-01-29 | International Business Machines Corporation | Distributed locking protocol with asynchronous token prefetch and relinquish |
US7447786B2 (en) * | 2003-05-09 | 2008-11-04 | Oracle International Corporation | Efficient locking of shared data that is accessed for reads in a cluster database |
US7739385B1 (en) * | 2003-06-16 | 2010-06-15 | Cisco Technology, Inc. | Explicit locking of resources in devices accessible on a network |
US7555481B1 (en) * | 2003-10-28 | 2009-06-30 | Oracle Corporation | Method and apparatus for increasing transaction concurrency by early release of locks in groups |
-
2009
- 2009-11-27 US US12/626,714 patent/US8666958B2/en active Active
-
2010
- 2010-11-19 KR KR1020100115390A patent/KR101634403B1/ko active IP Right Grant
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5327556A (en) | 1991-02-15 | 1994-07-05 | International Business Machines Corporation | Fast intersystem page transfer in a data sharing environment with record locking |
US5551046A (en) | 1991-06-14 | 1996-08-27 | International Business Machines Corporation | Method for non-hierarchical lock management in a multi-system shared data environment |
US6349310B1 (en) | 1999-07-06 | 2002-02-19 | Compaq Computer Corporation | Database management system and method for accessing rows in a partitioned table |
US20090187545A1 (en) | 2008-01-21 | 2009-07-23 | Kenichi Kaku | Method and apparatus for data processing with index search |
Also Published As
Publication number | Publication date |
---|---|
KR20110059532A (ko) | 2011-06-02 |
US20110131192A1 (en) | 2011-06-02 |
US8666958B2 (en) | 2014-03-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101634403B1 (ko) | 공유 디스크 데이터베이스 시스템에서 락 통신들을 감소시키기 위한 접근 방법들 | |
CN109491928B (zh) | 缓存控制方法、装置、终端及存储介质 | |
US9491238B2 (en) | Rapid client-side component processing based on component relationships | |
US10664452B2 (en) | Parallel processing of large data files on distributed file systems with dynamic workload balancing | |
JP4612710B2 (ja) | トランザクション並行制御方法、データベース管理システム、およびプログラム | |
CN104954468A (zh) | 资源的分配方法及装置 | |
KR20120014141A (ko) | 멀티 스레드 어플리케이션을 위한 해시 테이블의 동시 리해싱의 수행 | |
CN111857539B (zh) | 用于管理存储系统的方法、设备和计算机可读介质 | |
US20120203784A1 (en) | Maintaining a data structure with data set names and pointers to a plurality of catalogs | |
US10970132B2 (en) | Deadlock resolution between distributed processes | |
US10558571B2 (en) | Second level database file cache for row instantiation | |
CN107977165B (zh) | 数据缓存优化方法、装置和计算机设备 | |
US8341368B2 (en) | Automatic reallocation of structured external storage structures | |
CN110781137A (zh) | 分布式系统的目录读取方法、装置、服务器和存储介质 | |
US10606795B2 (en) | Methods for managing a buffer cache and devices thereof | |
CN115951844B (zh) | 分布式文件系统的文件锁管理方法、设备及介质 | |
US9063858B2 (en) | Multi-core system and method for data consistency by memory mapping address (ADB) to hash table pattern associated with at least one core | |
US20210191727A1 (en) | Tuple checkout with notify in coordination namespace system | |
CN116627345A (zh) | 应用于海量value键值对的高性能KV缓存方法及装置 | |
US11516290B2 (en) | Sharing tuples across independent coordination namespace systems | |
KR102157591B1 (ko) | 대용량 공간 데이터 환경에서 공간분석을 위한 공간질의 장치 및 그를 위한 컴퓨터로 읽을 수 있는 기록 매체 | |
US6834281B1 (en) | Method and apparatus to support multi-node direct access to file system data | |
US20200301756A1 (en) | Deadlock resolution between distributed processes using process and aggregated information | |
GB2516092A (en) | Method and system for implementing a bit array in a cache line | |
CN116821058B (zh) | 元数据访问方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20190530 Year of fee payment: 4 |