Cette page décrit les lectures dirigées Spanner et leur utilisation.
Les lectures dirigées dans Spanner permettent d'acheminer transactions en lecture seule et les lectures uniques d'instance répliquée ou de région dans une configuration d'instance multirégionale ou configuration régionale avec une ou plusieurs régions facultatives en lecture seule.
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 de la charge de travail. Vous pouvez diriger vos charges de travail d'analyse changer les flux de lecture sur des Instances répliquées Spanner pour minimiser l'impact sur les charges de travail transactionnelles s'exécutant 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 acceptées ? |
---|---|
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
sont utilisées dans une transaction en lecture-écriture, la transaction échoue avec
une erreur BAD_REQUEST
.
Limites
Les lectures dirigées par Spanner présentent les limites suivantes:
- Vous ne pouvez utiliser les lectures dirigées que dans une instance Spanner dans une configuration d'instance multirégionale ; ou une configuration régionale personnalisée avec une ou plusieurs régions facultatives en lecture seule.
- 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 les lectures dirigées dans la console Google Cloud ou la Google Cloud CLI. Il est disponibles via REST Les API RPC et Spanner bibliothèques clientes.
- Vous pouvez spécifier un maximum de 10 instances répliquées par lecture dirigée.
Avant de commencer
Tenez compte des points suivants avant d'utiliser les lectures dirigées:
- L'application peut engendrer une latence supplémentaire si vous acheminez les lectures vers une instance répliquée 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 est automatique
l'option de basculement est activée et toutes les instances répliquées spécifiées sont indisponibles
non opérationnel, Spanner achemine les requêtes vers une instance répliquée
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 des lectures dirigées
Si vous utilisez l'API REST ou RPC pour effectuer des lectures dirigé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 un maximum de 10includeReplicas
.replicaSelections
: se compose de l'instancelocation
ou de l'instance dupliquéetype
. la requête de lecture dirigée. Si vous utilisezincludeReplicas
, vous devez fournir au moins l'un des champs suivants:location
: emplacement diffusant 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 le lieu ne fait pas partie des dans la configuration multirégionale de votre base de données, requêtes ne seront pas acheminées comme prévu. Elles sont diffusées dans 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 l'instance répliquée non principale la 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
: la valeur par défaut estFalse
(automatique). 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ésactiver l'option de basculement automatique pour que toutes les instances répliquées spécifiées indisponible ou non opérationnel, la requête de lecture dirigée échoue. Valeurs possibles inclureTRUE
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 d'instance répliquée exclu 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 d'instance répliquée exclu de la diffusion de l'instance lit la requête. 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 les lectures dirigées
Vous pouvez utiliser les bibliothèques clientes Spanner ainsi que les API REST et RPC pour et effectuer des lectures dirigées.
Bibliothèques clientes
C++
C#
Go
Java
Node.js
PHP
Python
Ruby
REST
Vous pouvez utiliser les API REST suivantes pour effectuer des lectures dirigé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.
RPC
Vous pouvez utiliser les API RPC suivantes pour effectuer des lectures dirigées:
Surveillance
Spanner fournit une métrique de latence pour vous aider à surveiller lit les activités de vos instances. Cette métrique est disponible 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. La
Le champ /is_directed_read
indique si l'option de lecture dirigée est
est activé.
Pour obtenir la liste complète des métriques disponibles, consultez la liste des métriques Spanner.
Étape suivante
- Découvrez comment effectuer des lectures en dehors des transactions.