Cette page décrit les lectures dirigées par Spanner et explique comment les utiliser.
Les lectures dirigées dans Spanner permettent d'acheminer les transactions en lecture seule et les lectures uniques vers un type ou une région d'instances répliquées spécifiques au sein d'une configuration d'instance multirégionale, ou vers une configuration régionale personnalisée avec des régions de lecture seule facultatives.
Cas d'utilisation courants
Voici quelques cas d'utilisation courants des lectures dirigées:
- Équilibrage des charges de travail sur plusieurs régions pour obtenir une utilisation du processeur plus uniforme.
- Isolez les analyses dans votre application en minimisant l'impact sur les charges de travail transactionnelles.
- Assurer une isolation partielle pour les lectures de flux de modifications. Si vous utilisez l'API Spanner pour diffuser les modifications de données Spanner, vous pouvez contribuer à réduire l'impact sur les charges de travail transactionnelles à l'aide de lectures dirigées.
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 transactions en lecture-écriture et les types de LMD partitionnés pour les mises à jour groupées. En effet, les transactions en lecture-écriture doivent être traitées dans la région principale. Si des lectures dirigées sont utilisées dans une transaction en lecture-écriture, celle-ci échoue avec une erreur BAD_REQUEST
.
Limites
Les lectures dirigées par Spanner présentent les limites suivantes:
- Vous ne pouvez utiliser des lectures dirigées que dans une instance Spanner qui se trouve dans une configuration d'instance multirégionale ou une configuration régionale personnalisée avec des régions de lecture seule facultatives.
- Vous ne pouvez pas utiliser les lectures dirigées avec les requêtes en lecture-écriture, car les requêtes d'écriture sont toujours diffusées par la région principale.
- 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 jusqu'à 10 instances répliquées par lecture dirigée.
- Si vous utilisez le tableau de bord des insights système ou l'Explorateur de métriques, dans les graphiques "Opérations par seconde", "Opérations par seconde par base de données" et "Opérations par seconde par API", il est possible que votre requête de lecture dirigée s'affiche ailleurs que dans celui que vous avez indiqué. Dans ce cas, les informations des graphiques peuvent être incorrectes. Vous pouvez vérifier que vos requêtes de lecture sont acheminées vers la ou les régions choisies à l'aide des métriques d'utilisation du processeur. Ces métriques fournissent les informations les plus précises sur la destination du trafic de lecture dirigée.
Avant de commencer
Tenez compte des points suivants avant d'utiliser des lectures dirigées:
- L'application peut entraîner une latence supplémentaire si vous acheminez des 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 :
- Nom de la région (par exemple,
us-central1
). - Type d'instance répliquée (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 toutes les instances répliquées spécifiées sont indisponibles ou non opérationnelles, Spanner achemine les requêtes vers une instance répliquée en dehors de la liste
includeReplicas
. Si vous désactivez l'option de basculement automatique et que toutes les instances répliquées spécifiées sont indisponibles ou non opérationnelles, 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 includeReplicas
ou excludeReplicas
, mais pas les deux.
includeReplicas
: contient un ensemble répété d'replicaSelections
. Cette liste indique l'ordre dans lequel les lectures dirigées vers des régions ou des types d'instances répliquées spécifiques doivent être prises en compte. Vous pouvez spécifier jusqu'à 10includeReplicas
.replicaSelections
: consiste en l'instancelocation
ou l'instance répliquéetype
qui diffuse la requête de lecture dirigée. Si vous utilisezincludeReplicas
, vous devez fournir au moins l'un des champs suivants :location
: emplacement servant la requête de lecture dirigée. L'emplacement doit correspondre à 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 incluses dans la configuration multirégionale de votre base de données, les requêtes ne seront pas acheminées comme prévu. Elles sont plutôt desservies 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
.type
: type d'instance répliquée diffusant la requête de lecture dirigée. Les types possibles sontREAD_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 toutes les instances répliquées spécifiées sont indisponibles ou non opérationnelles, Spanner achemine les requêtes vers une instance répliquée en dehors de la listeincludeReplicas
. Si vous désactivez l'option de basculement automatique et que toutes les instances répliquées spécifiées sont indisponibles ou non opérationnelles, la requête de lecture dirigée échoue. Les valeurs possibles sontTRUE
pour "désactivé" et "FALSE
" pour "activé".
excludeReplicas
: contient un ensemble répété d'replicaSelections
qui est exclu de la diffusion des requêtes. Spanner n'achemine pas les requêtes vers les instances répliquées de cette liste.replicaSelections
: emplacement ou type d'instance répliquée qui est 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 d'instance répliquée qui est exclu de la diffusion de la requête de lecture dirigée. Les types possibles sontREAD_WRITE
etREAD_ONLY
.
Pour voir un exemple de corps de requête REST, cliquez sur l'onglet REST dans la section Utiliser les lectures dirigées.
Utiliser des lectures dirigées
Vous pouvez utiliser les bibliothèques clientes Spanner et les API REST et RPC pour 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:
Étapes suivantes
- Découvrez comment effectuer des lectures en dehors des transactions.