MVCC 최적화
Hyperledger Fabric 데이터베이스는 다중 버전 동시성 제어(MVCC)를 사용하여 이중 지출 및 데이터 불일치를 방지합니다.
동일한 상태가 업데이트되면 새 버전의 레코드가 이전 버전을 덮어씁니다. 블록에서 동일한 키를 업데이트하는 동시 요청이 있을 경우 MVCC_READ_CONFLICT 오류가 생성될 수 있습니다.
전송, 민트, 레코딩 및 보류 작업에 대한 MVCC 오류를 줄이려면 토큰 체인 코드에 대한 MVCC 최적화를 사용으로 설정할 수 있습니다. 이 최적화는 Oracle Blockchain Platform에서만 작동합니다. 기본적으로 최적화는 비활성화됩니다. 최적화를 사용으로 설정하려면 다음 적용 가능한 단계를 완료하십시오.
- CLI: 부울
-m
또는--enable_mvcc_optimization
매개변수를ochain init
명령으로 지정합니다. 기본적으로 매개변수는false
로 설정됩니다. 최적화를 사용으로 설정하려면ochain init
명령행에-m true
를 추가합니다. - Visual Studio 코드: 체인 코드를 생성할 때 체인 코드 생성 창에서 MVCC 최적화 사용을 선택합니다.
이전 버전의 Blockchain App Builder에서 생성된 체인 코드로 최적화를 사용하려면 다음 단계를 완료하십시오.
- 최신 버전의 Blockchain App Builder를 설치한 후 CLI에서 체인코드 프로젝트 업그레이드 및 Visual Studio 코드에서 체인코드 프로젝트 업그레이드에 설명된 대로 체인코드를 업그레이드합니다.
- 체인 코드의 루트 폴더에서
.ochain.json
파일을 편집하여enableMvccOptimization
를true
로 설정합니다. - 최적화를 추가하고 체인 코드의 루트 폴더에 두 개의 새 폴더(
statedb
및tokens
)를 생성하는 체인코드를 동기화합니다. 동기화에 대한 자세한 내용은 생성된 소스 코드로 사양 파일 변경 사항 동기화 및 생성된 소스 코드로 사양 파일 변경 사항 동기화를 참조하십시오.
이 오류가 생성될 때 클라이언트 응용 프로그램 재시도 요청을 하거나 블록체인 네트워크로 전송되기 전에 동시 요청을 캡처하기 위한 대기열을 사용하는 등 MVCC_READ_CONFLICT 오류를 해결하는 다른 방법입니다. 자세한 내용은 Hyperledger Fabric 설명서의 읽기-쓰기 세트 의미 체계를 참조하십시오.
주:
MVCC 최적화는 Oracle Blockchain Platform 및 Hyperledger Fabric 피어가 모두 포함된 하이브리드 네트워크 또는 로컬 Hyperledger Fabric 네트워크에서 테스트할 때 작동하지 않습니다. 하이브리드 네트워크에서 MVCC 최적화를 사용으로 설정하지 마십시오. 이로 인해 피어 간에 불일치가 발생할 수 있습니다.