Cette page décrit les lectures dirigées Spanner et leur utilisation.
Les lectures dirigées dans Spanner offrent la flexibilité nécessaire pour acheminer les transactions en lecture seule et les lectures uniques vers un type de réplication ou une région spécifique dans une configuration d'instance multirégionale ou une configuration régionale personnalisée avec une ou plusieurs régions en lecture seule facultatives.
Avantages
Les lectures dirigées présentent les avantages suivants:
- Obtenez un meilleur contrôle des charges de travail d'équilibrage de charge sur plusieurs régions pour obtenir une utilisation du processeur plus uniforme et éviter le surprovisionnement d'instances Spanner.
- Activez l'isolation des charges de travail. Vous pouvez diriger vos charges de travail d'analyse et vos lectures de flux de modifications vers des réplicas Spanner spécifiques afin de minimiser l'impact sur les charges de travail transactionnelles exécutées sur la même base de données Spanner.
Opérations de requête compatibles
Opérations de requête | Les lectures dirigées sont-elles compatibles ? |
---|---|
Lecture non actualisée | Oui |
Lecture forte | Oui |
Transaction en lecture-écriture | Non |
Les lectures dirigées ne sont pas compatibles avec les types de mises à jour groupées transaction en lecture-écriture et LMD partitionné. En effet, les transactions en lecture-écriture doivent être traitées dans la région leader. Si des lectures dirigées sont utilisées dans une transaction en lecture/écriture, la transaction échoue et génère une erreur BAD_REQUEST
.
Limites
Les lectures dirigées Spanner présentent les limites suivantes:
- Vous ne pouvez utiliser des lectures dirigées que dans une instance Spanner qui utilise une configuration d'instance multirégionale ou une configuration régionale personnalisée avec une ou plusieurs régions en lecture seule facultatives.
- Vous ne pouvez pas utiliser de lectures dirigées avec des requêtes en lecture-écriture, car les requêtes d'écriture sont toujours traitées par la région leader.
- Vous ne pouvez pas utiliser de lectures dirigées dans la console Google Cloud ni dans Google Cloud CLI. Il est disponible à l'aide des API REST et RPC, ainsi que des bibliothèques clientes Spanner.
- Vous pouvez spécifier un maximum de 10 répliques dans une seule lecture dirigée.
Avant de commencer
Tenez compte des points suivants avant d'utiliser des lectures dirigées:
- L'application peut subir une latence supplémentaire si vous acheminez les lectures vers un réplica ou une région autre que celle la plus proche de l'application.
- Vous pouvez acheminer le trafic en fonction des éléments suivants :
- Nom de la région (par exemple,
us-central1
). - Type de réplication (valeurs possibles:
READ_ONLY
etREAD_WRITE
)
- Nom de la région (par exemple,
- L'option de basculement automatique dans les lectures dirigées est activée par défaut. Lorsque l'option de basculement automatique est activée et que tous les réplicas spécifiés sont indisponibles ou non opérationnels, Spanner achemine les requêtes vers un réplica en dehors de la liste
includeReplicas
. Si vous désactivez l'option de basculement automatique et que tous les réplicas spécifiés sont indisponibles ou non fiables, la requête de lecture dirigée échoue.
Paramètres de lecture dirigée
Si vous utilisez l'API REST ou RPC pour effectuer des lectures ciblées, vous devez définir ces champs dans le paramètre directedReadOptions
. Vous ne pouvez inclure qu'un seul élément parmi includeReplicas
ou excludeReplicas
.
includeReplicas
: contient un ensemble répété dereplicaSelections
. Cette liste indique l'ordre dans lequel les lectures dirigées vers des régions ou des types de réplicas spécifiques doivent être prises en compte. Vous pouvez spécifier jusqu'à 10includeReplicas
.replicaSelections
: comprendlocation
outype
du réplicat qui traite la requête de lecture dirigée. Si vous utilisezincludeReplicas
, vous devez fournir au moins l'un des champs suivants:location
: emplacement qui traite la requête de lecture dirigée. L'emplacement doit être l'une des régions de la configuration multirégionale de votre base de données. Si l'emplacement ne fait pas partie des régions de la configuration multirégionale de votre base de données, les requêtes ne seront pas acheminées comme prévu. Ils sont plutôt desservis par la région la plus proche. Par exemple, vous pouvez diriger les lectures vers l'emplacementus-central1
sur une base de données dans la configuration d'instance multirégionalenam6
.Vous pouvez également spécifier le paramètre
location
avec un littéral de chaîneleader
ounon-leader
. Si vous saisissez la valeurleader
, Spanner dirige vos requêtes vers le réplique leader de la base de données. À l'inverse, si vous saisissez la valeurnon-leader
, Spanner traite la requête dans le réplica non leader le plus proche.type
: type de réplication qui répond à la requête de lecture dirigée. Les types possibles incluentREAD_WRITE
etREAD_ONLY
.
autoFailoverDisabled
: par défaut, ce paramètre est défini surFalse
, ce qui signifie que le basculement automatique est activé. Lorsque l'option de basculement automatique est activée et que tous les réplicas spécifiés sont indisponibles ou non fiables, Spanner achemine les requêtes vers un réplica en dehors de la listeincludeReplicas
. Si vous désactivez l'option de basculement automatique et que tous les réplicas spécifiés sont indisponibles ou non fiables, la requête de lecture dirigée échoue. Les valeurs possibles sontTRUE
pour "Désactivé" etFALSE
pour "Activé".
excludeReplicas
: contient un ensemble répété dereplicaSelections
qui est exclu de la diffusion des requêtes. Spanner ne redirige pas les requêtes vers les réplicas de cette liste.replicaSelections
: emplacement ou type de réplication exclu de la diffusion de la requête de lecture dirigée. Si vous utilisezexcludeReplicas
, vous devez fournir au moins l'un des champs suivants :location
: emplacement exclu de la diffusion de la requête de lecture dirigée.type
: type de réplication exclu de la diffusion de la requête de lecture dirigée. Les types possibles incluentREAD_WRITE
etREAD_ONLY
.
Pour voir un exemple de corps de requête REST, cliquez sur l'onglet REST dans la section Utiliser des lectures dirigées.
Utiliser des lectures dirigées
Vous pouvez utiliser les bibliothèques clientes Spanner, ainsi que les API REST et RPC pour effectuer des lectures ciblées.
Vous pouvez utiliser les API REST suivantes pour effectuer des lectures ciblées:
Par exemple, pour effectuer des lectures dirigées dans us-central1
à l'aide de executeSQL
:
Cliquez sur
projects.instances.databases.sessions.executeSql
.Pour session, saisissez la valeur suivante :
projects/<VAR>PROJECT-ID</VAR>/instances/<VAR>INSTANCE-ID</VAR>/databases/<VAR>DATABASE-ID</VAR>/sessions/<VAR>SESSION-ID</VAR>
Remplacez les éléments suivants :
- PROJECT-ID : ID du projet.
- INSTANCE-ID : ID de l'instance.
- DATABASE-ID: ID de la base de données.
- SESSION-ID: ID de session.
Vous recevez la valeur
SESSION-ID
lorsque vous créez une session.
Pour le champ Request body (Corps de la requête), utilisez les lignes suivantes :
{ "directedReadOptions": { "includeReplicas": { "replicaSelections": [ { "location": "us-central1", } ] } }, "sql": "SELECT SingerId, AlbumId, AlbumTitle FROM Albums" }
Cliquez sur Exécuter. La réponse affiche les résultats de la requête.
Vous pouvez utiliser les API RPC suivantes pour effectuer des lectures ciblées:
Surveillance
Spanner fournit une métrique de latence pour vous aider à surveiller les activités de lecture dirigée dans vos instances. La métrique est disponible dans Cloud Monitoring.
spanner.googleapis.com/api/read_request_latencies_by_serving_location
Vous pouvez filtrer cette métrique à l'aide des champs /serving_location
ou /is_directed_read
. Le champ /serving location
indique l'emplacement du serveur Spanner à partir duquel la requête est diffusée. Le champ /is_directed_read
indique si l'option de lecture dirigée est activée.
Pour obtenir la liste complète des métriques disponibles, consultez la section Liste des métriques Spanner.
Étape suivante
- Découvrez comment effectuer des lectures en dehors des transactions.