SQLite에서는 이미 병렬 쓰기를 지원하는 HCTree 백엔드에서 작업하고 있습니다.

SQLite는

C로 작성된 비교적 작은 라이브러리에 포함된 ACID 호환 관계형 데이터베이스 관리 시스템입니다.

프로젝트 개발자 SQLite는 실험적인 HCtree 백엔드 테스트를 시작했습니다. 이는 행 수준 잠금을 지원하고 쿼리 처리에서 높은 수준의 병렬 처리를 제공합니다.

그들이 작업하고 있는 새로운 백엔드에 대해서는 다음과 같이 언급됩니다. 클라이언트-서버 시스템에서 SQLite를 사용하는 효율성을 향상시키는 것을 목표로 합니다. 그들은 데이터베이스에 대한 많은 수의 동시 쓰기 요청을 처리해야 합니다.

라스 원래 사용된 b-트리 구조 SQLite에서 데이터 저장 이러한 유형의 부하용으로 설계되지 않았습니다., SQLite는 하나의 스트림에만 쓰도록 제한합니다. 실험으로 개발자는 쓰기 작업을 병렬화하는 데 더 적합한 스토리지용 HCtree 구조를 사용하는 대체 솔루션을 개발하기 시작했습니다.

HC-tree(hctree) 프로젝트는 다음과 같이 일반 SQLite에서 개선되는 새로운 데이터베이스 백엔드를 개발하려는 시도입니다.

향상된 동시성: 시작-동시 확장을 사용하면 페이지 수준에서 낙관적 잠금을 사용하여 동시에 실행할 수 있도록 변경됩니다. 이렇게 하면 동시성이 다소 향상되지만 페이지 수준 잠금은 논리적으로 독립된 트랜잭션 간의 충돌을 감지할 수 있으며 COMMIT 작업은 여전히 ​​직렬화되어야 합니다.

복제 지원: 스톡 SQLite는 다음을 지원합니다. 세션 확장, 커밋된 트랜잭션의 내용을 두 번째 데이터베이스로 전송 및 적용하기 위해 직렬화할 수 있습니다. Hctree는 이를 데이터베이스 백엔드에 통합하고 리더-팔로워 구성에서 팔로워 데이터베이스에 이러한 트랜잭션을 적용하기 위한 지원을 추가합니다. 이 경우 선행 데이터베이스에서 수신한 트랜잭션은 선행 데이터베이스에 원래 적용된 것보다 더 빠르고 더 큰 동시성으로 적용될 수 있습니다. 트랜잭션 유효성 검사.

데이터베이스 크기 제한 제거: Stock SQLite는 32비트 페이지 번호를 사용합니다. 기본 페이지 크기인 4KiB를 사용하면 최대 데이터베이스 크기가 2^44바이트 또는 16TiB가 됩니다.

동시에 여러 작업을 처리하려면 HCtree 로그는 트랜잭션 분리 메커니즘을 사용합니다. MVCC(Multiple Version Containment Control)와 유사한 페이지 수준 잠금을 사용하지만 페이지 세트 대신 키 범위 및 키 범위를 기반으로 하는 트랜잭션 제어를 사용합니다.

읽기 및 쓰기 작업은 데이터베이스 스냅샷과 관련하여 수행되며, 변경 사항은 트랜잭션이 완료된 후에만 기본 데이터베이스에 표시됩니다.

클라이언트는 세 가지 작업을 사용하여 트랜잭션을 열 수 있습니다.

  • «BEGIN«: 거래는 다른 고객의 액세스 데이터를 고려하지 않습니다. 트랜잭션 내에서 쓰기 작업이 수행되는 경우 실행 시간 동안 데이터베이스에 대한 다른 쓰기 작업이 없는 경우에만 트랜잭션을 커밋할 수 있습니다.
    «동시 시작«: 트랜잭션은 다른 클라이언트의 액세스에 대한 정보를 수집합니다. 트랜잭션 내에서 쓰기 작업이 수행되는 경우 스냅샷이 생성된 이후 다른 트랜잭션이 데이터베이스에 커밋된 경우 트랜잭션이 커밋될 수 있습니다.
    «독점 시작«: 트랜잭션을 연 후 완료될 때까지 다른 트랜잭션의 작업을 차단합니다.

HCtree는 마스터-슬레이브 복제를 지원하여 트랜잭션을 다른 데이터베이스로 전송할 수 있고 보조 데이터베이스를 기본 데이터베이스와 동기화 상태로 유지할 수 있습니다.

HCtree는 또한 데이터베이스 크기 제한을 제거합니다. 32비트 데이터 페이지 식별자 대신 HCtree는 48비트 식별자를 사용하여 최대 데이터베이스 크기를 16테비바이트에서 1엑비바이트(백만 테비바이트)로 늘립니다.

HCtree 백엔드의 SQLite 성능은 적어도 기존의 단일 스레드 백엔드만큼 우수할 것으로 예상됩니다. HCtree를 지원하는 SQLite 클라이언트는 HC-tree 데이터베이스와 레거시 SQLite 데이터베이스 모두에 액세스할 수 있습니다.

출처 : https://sqlite.org/


코멘트를 남겨주세요

귀하의 이메일 주소는 공개되지 않습니다. 필수 필드가 표시되어 있습니다 *

*

*

  1. 데이터 책임자: AB Internet Networks 2008 SL
  2. 데이터의 목적 : 스팸 제어, 댓글 관리.
  3. 합법성 : 귀하의 동의
  4. 데이터 전달 : 법적 의무에 의한 경우를 제외하고 데이터는 제 XNUMX 자에게 전달되지 않습니다.
  5. 데이터 저장소 : Occentus Networks (EU)에서 호스팅하는 데이터베이스
  6. 권리 : 귀하는 언제든지 귀하의 정보를 제한, 복구 및 삭제할 수 있습니다.