Optimisation MVCC
Les bases de données Hyperledger Fabric utilisent le contrôle d'accès simultané à plusieurs versions (MVCC) pour éviter les doubles dépenses et les incohérences de données.
Lorsque le même état est mis à jour, une nouvelle version de l'enregistrement remplace l'ancienne version. S'il existe des demandes concurrentes pour mettre à jour la même clé dans un bloc, une erreur MVCC_READ_CONFLICT peut être générée.
Pour réduire les erreurs MVCC pour les opérations de transfert, de menthe, de gravure et de blocage, vous pouvez activer l'optimisation MVCC pour le code de chaîne de jeton. Cette optimisation ne fonctionne que sur Oracle Blockchain Platform. Par défaut, l'optimisation est désactivée. Pour activer l'optimisation, effectuez l'étape suivante applicable.
- Interface de ligne de commande : Spécifiez le paramètre booléen
-m
ou--enable_mvcc_optimization
avec la commandeochain init
. Par défaut, le paramètre est réglé àfalse
. Pour activer l'optimisation, ajoutez-m true
à la ligne de commandeochain init
. - Code Visual Studio : Lorsque vous créez un code de chaîne, sélectionnez Activer l'optimisation MVCC dans la fenêtre Créer un code de chaîne.
Pour utiliser l'optimisation avec le code de chaîne créé dans les versions précédentes du générateur d'applications de chaîne de blocs, procédez comme suit :
- Après avoir installé la dernière version du générateur d'applications de chaîne de blocs, mettez à niveau le code de chaîne comme décrit sous Mise à niveau des projets de code de chaîne dans l'interface de ligne de commande et Mise à niveau des projets de code de chaîne dans Visual Studio Code.
- Modifiez le fichier
.ochain.json
dans le dossier racine du code de chaîne pour réglerenableMvccOptimization
àtrue
. - Synchronisez le code de chaîne, qui ajoute l'optimisation et crée deux nouveaux dossiers dans le dossier racine du code de chaîne :
statedb
ettokens
. Pour plus d'informations sur la synchronisation, voir Synchroniser les modifications de fichier de spécification avec le code source généré et Synchroniser les modifications de fichier de spécification avec le code source généré.
Autres méthodes pour contourner les erreurs MVCC_READ_CONFLICT, notamment les demandes de nouvelle tentative de l'application client lorsque cette erreur est générée ou l'utilisation d'une file d'attente pour saisir les demandes concurrentes avant leur envoi au réseau de chaîne de blocs. Pour plus d'informations, voir Sémantique des jeux de lecture-écriture dans la documentation sur Hyperledger Fabric.
Note :
L'optimisation MVCC ne fonctionne pas sur les réseaux hybrides qui incluent à la fois des pairs Oracle Blockchain Platform et Hyperledger Fabric ou pour les tests sur un réseau Hyperledger Fabric local. N'activez pas l'optimisation MVCC sur les réseaux hybrides, car cela pourrait entraîner des incohérences entre pairs.