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 Code:在创建链代码时,在创建链代码窗口中选择启用 MVCC 优化

要将优化用于在早期版本的区块链应用程序构建器中创建的链代码,请完成以下步骤:

  1. 安装最新版本的区块链应用程序构建器后,请按 Upgrading Chaincode Projects in the CLIUpgrading Chaincode Projects in Visual Studio Code 中所述升级链代码。
  2. 编辑链代码根文件夹中的 .ochain.json 文件以将 enableMvccOptimization 设置为 true
  3. 同步链代码,添加优化并在链代码的根文件夹中创建两个新文件夹:statedbtokens。有关同步的更多信息,请参见 Synchronize Specification File Changes With Generated Source CodeSynchronize Specification File Changes With Generated Source Code

解决 MVCC_READ_CONFLICT 错误的其他方法,包括生成此错误时让客户机应用程序重试请求,或在将并发请求发送到区块链网络之前使用队列捕获并发请求。有关更多信息,请参见 Hyperledger Fabric 文档中的读写集语义

注意:

MVCC 优化不适用于同时包括 Oracle Blockchain Platform 和 Hyperledger Fabric 对等节点的混合网络,也不适用于本地 Hyperledger Fabric 网络上的测试。请勿在混合网络上启用 MVCC 优化,因为这可能会导致对等节点之间的不一致。