인덱스 잠금

Index locking

데이터베이스에서 인덱스는 데이터베이스 시스템에서 사용자 데이터에 대한 액세스를 효율적으로 탐색하기 위해 사용되는 데이터베이스의 일부인 데이터 구조입니다.인덱스 데이터는 사용자 데이터와 다른 시스템 데이터이며 주로 포인터로 구성됩니다.데이터베이스의 변경 사항(삽입, 삭제 또는 수정 작업을 통해)은 정확한 사용자 데이터 [1]액세스를 유지하기 위해 인덱스를 업데이트해야 할 수 있습니다.인덱스 잠금은 인덱스 무결성을 유지하기 위해 사용되는 기술입니다.인덱스의 일부는 관련 사용자 데이터에 대한 액세스 시도의 결과로 트랜잭션에 의해 액세스될 때 데이터베이스 트랜잭션 중에 잠깁니다.또한 특수 데이터베이스 시스템 트랜잭션(사용자가 호출한 트랜잭션이 아님)을 호출하여 시스템 자체 유지보수 작업의 일부로 인덱스를 유지 및 수정할 수 있습니다.트랜잭션에 의해 인덱스의 일부가 잠기면 다른 트랜잭션이 이 인덱스 부분에 액세스하지 못하도록 차단될 수 있습니다(잠금 유형 및 필요한 작업에 따라 수정 및 읽기가 차단됨).Index Locking Protocol은 팬텀 읽기 현상이 발생하지 않도록 보장합니다.인덱스 잠금 프로토콜 상태:

  • 모든 관계에는 하나 이상의 인덱스가 있어야 합니다.
  • 트랜잭션은 관계에서 하나 이상의 인덱스를 통해 튜플을 찾은 후에만 튜플에 액세스할 수 있습니다.
  • 룩업을 실행하는 트랜잭션 Ti는 리프 노드에 인덱스 룩업을 충족하는 태플이 포함되어 있지 않더라도 S-모드로 액세스하는 모든 인덱스 리프 노드를 잠가야 합니다(예를 들어 범위 쿼리의 경우 리프 내의 태플이 범위에 없습니다).
  • 관계 r에 태플 ti를 삽입, 업데이트 또는 삭제하는 트랜잭션 Ti는 모든 인덱스를 r로 업데이트해야 하며 삽입/업데이트/삭제의 영향을 받는 모든 인덱스 리프 노드에서 배타적 잠금을 얻어야 합니다.
  • 2상 잠금 프로토콜의 규칙을 준수해야 합니다.

[1]

인덱스에 액세스하기 위한 특수한 동시성 제어 기술이 있습니다.이러한 기술은 인덱스 유형에 따라 다르며 인덱스 구조의 이점을 활용합니다.일반적으로 사용자 데이터에 적용되는 일반적인 동시성 제어 방법을 인덱스에 적용하는 것보다 훨씬 효과적입니다.데이터베이스 인덱스로 정기적으로 사용되는 B-Tree(B-Tree 동시성[2] 제어)에 대한 전문 기술들이 주목할 만하고 널리 연구되고 있다.

인덱스 잠금은 인덱스에 동시에 액세스하는 스레드를 조정하는 데 사용되며 일반적으로 사용자 데이터에 대한 일반적인 트랜잭션 잠금보다 수명이 짧습니다.전문 문헌에서는,[2] 그것들은 종종 래치라고 불립니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ a b Gerhard Weikum, Gottfried Vossen (2001) :트랜잭션 정보 시스템 9장, Elsevier, ISBN1-55860-508-8
  2. ^ a b Goetz Graefe (2010): "데이터베이스 시스템에서의 B-tree 잠금 기술 조사" ACM 트랜잭션(TODS), Volume 35호, 2010년 7월호(HPL-2010-9, HP Laboraties도 마찬가지).