Cette page explique comment utiliser l'isolation de lecture reproductible dans Spanner.
Repeatable read est un niveau d'isolation qui garantit que toutes les opérations de lecture d'une transaction voient un instantané cohérent de la base de données tel qu'il existait au début de la transaction. Dans Spanner, ce niveau d'isolation est implémenté à l'aide d'une technique également appelée isolation d'instantané. Cette approche est utile dans les scénarios de concurrence lecture-écriture élevée, où de nombreuses transactions lisent des données que d'autres transactions peuvent modifier. En utilisant un instantané fixe, la lecture répétée évite les impacts sur les performances du niveau d'isolation sérialisable plus rigoureux. Les lectures peuvent s'exécuter sans acquérir de verrous et sans bloquer les écritures simultanées, ce qui réduit potentiellement le nombre de transactions abandonnées qui pourraient devoir être relancées en raison de conflits de sérialisation. Pour en savoir plus, consultez Présentation des niveaux d'isolation.
Définir le niveau d'isolation
Vous pouvez définir le niveau d'isolation des transactions en lecture-écriture au niveau de la transaction à l'aide des méthodes suivantes :
Bibliothèques clientes
Go
Java
Node.js
Python
REST
Vous pouvez utiliser l'API REST TransactionOptions.isolation_level
pour définir le niveau d'isolation des transactions en lecture/écriture au niveau de la transaction. Les options valides sont TransactionOptions.SERIALIZABLE
et TransactionOptions.REPEATABLE_READ
. Par défaut, Spanner définit le niveau d'isolation sur "isolation sérialisable".
RPC
Cas d'utilisation non compatibles
- Vous ne pouvez utiliser l'isolation de lecture reproductible que dans les transactions en lecture/écriture. Spanner renvoie une erreur si vous définissez ce niveau d'isolation sur une transaction en lecture seule. Toutes les transactions en lecture seule fonctionnent avec un instantané fixe et ne nécessitent pas de verrous.
- Vous ne pouvez pas utiliser l'isolation de lecture reproductible pour modifier les tables dont les colonnes comportent des index de recherche en texte intégral.
Étapes suivantes
En savoir plus sur les niveaux d'isolation
Découvrez comment utiliser SELECT FOR UPDATE dans l'isolation de lecture répétable.
Pour en savoir plus sur la sérialisabilité et la cohérence externe de Spanner, consultez TrueTime et cohérence externe.