MVCC 最佳化
Hyperledger Fabric 資料庫使用多版本並行控制 (MVCC),以避免雙倍支出和資料不一致。
更新相同狀態時,新版本的記錄會覆寫舊版本。如果同時要求更新區塊中的相同索引鍵,可能會產生 MVCC_READ_CONFLICT 錯誤。
為減少傳輸、薄荷、燒錄和保持操作的 MVCC 錯誤,您可以為記號鏈碼啟用 MVCC 最佳化。此最佳化僅適用於 Oracle Blockchain Platform。預設會停用最佳化。若要啟用最佳化,請完成下列適用的步驟。
- CLI:使用
ochain init
命令指定布林值-m
或--enable_mvcc_optimization
參數。參數預設為false
。若要啟用最佳化,請將-m true
新增至ochain init
命令行。 - Visual Studio 程式碼:當您建立鏈碼時,請在建立鏈碼視窗中選取啟用 MVCC 最佳化。
若要與舊版區塊鏈 App 產生器中建立的鏈碼搭配使用最佳化,請完成下列步驟:
- 安裝最新版本的 Blockchain App Builder 之後,請依照升級 CLI 中的 Chaincode 專案和在 Visual Studio 程式碼中升級 Chaincode 專案中的說明升級 Chaincode。
- 編輯鏈碼根資料夾中的
.ochain.json
檔案,將enableMvccOptimization
設為true
。 - 同步鏈碼,新增最佳化並在鏈碼的根資料夾中建立兩個新資料夾:
statedb
和tokens
。如需有關同步化的詳細資訊,請參閱使用產生的來源代碼同步化規格檔案變更與使用產生的來源代碼同步化規格檔案變更。
解決 MVCC_READ_CONFLICT 錯誤的其他方法,包括在產生此錯誤時讓從屬端應用程式重試要求,或使用佇列先擷取並行要求,再將它們傳送至區塊鏈網路。如需詳細資訊,請參閱 Hyperledger Fabric 文件中的讀寫集語意。
附註:
MVCC 最佳化無法在包括 Oracle Blockchain Platform 和 Hyperledger Fabric 對等的混合網路上運作,也無法用於在本機 Hyperledger Fabric 網路上測試。請勿在混合網路上啟用 MVCC 最佳化,因為這可能會導致對等網路不一致。