Cette page explique comment créer et gérer des points de fractionnement dans votre base de données. Vous pouvez créer des points de fractionnement pour pré-fractionner votre base de données afin de vous préparer à une augmentation prévue du trafic. Pour en savoir plus sur le pré-fractionnement, consultez la présentation du pré-fractionnement.
Avant de commencer
-
Pour obtenir l'autorisation dont vous avez besoin pour créer et gérer des points de fractionnement, demandez à votre administrateur de vous accorder le rôle IAM Administrateur de bases de données Cloud Spanner (
roles/spanner.databaseAdmin
) sur votre instance. Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.Ce rôle prédéfini contient l'autorisation
spanner.databases.addSplitPoints
, qui est nécessaire pour créer et gérer des points de fractionnement.Vous pouvez également obtenir cette autorisation avec des rôles personnalisés ou d'autres rôles prédéfinis.
Les exemples gcloud CLI de cette page partent des principes suivants :
- Vous avez configuré gcloud CLI pour l'utiliser avec Spanner. Si vous débutez avec gcloud CLI et Spanner, consultez Créer et interroger une base de données à l'aide de gcloud CLI.
Vous avez configuré gcloud CLI avec votre projet. Exemple :
gcloud config set core/project PROJECT_ID
Assurez-vous que votre instance Spanner dispose de suffisamment de nœuds pour gérer l'augmentation prévue du trafic. Pour en savoir plus, consultez Présentation du pré-fractionnement.
Créer des points de fractionnement
Vous pouvez créer des points de fractionnement à l'aide de la Google Cloud CLI ou des API REST.
gcloud
Si vous souhaitez créer des points de fractionnement à l'aide de Google Cloud CLI, vous devez créer un fichier contenant tous les fractionnements et fournir le chemin d'accès dans la commande gcloud CLI. Le fichier ne doit pas dépasser la limite de l'API, qui est de 100 points par requête API. Pour en savoir plus, consultez la page Quotas et limites.
Le fichier doit utiliser le format suivant pour spécifier les points de fractionnement :
ObjectType ObjectName (SplitValue1)
ObjectType ObjectName (SplitValue2)
ObjectType ObjectName (SplitValueN)
Remplacez les variables suivantes lorsque vous créez le fichier :
- ObjectType : type d'objet dans lequel vous souhaitez ajouter des fractionnements. Les valeurs valides sont
TABLE
etINDEX
. - ObjectName : nom de la table ou de l'index de la base de données.
- SplitValue1..N : valeurs des points de fractionnement où vous souhaitez introduire les fractionnements.
Lorsque vous créez les valeurs de point de fractionnement dans le fichier, respectez les règles suivantes :
- Les valeurs de chaîne doivent être entre guillemets simples. Par exemple :
'splitKeyPart'
- Les valeurs booléennes doivent être
true
oufalse
. - Les valeurs de type de données Spanner
INT64
etNUMERIC
doivent être entre guillemets simples. Par exemple,'123'
ou'99.99'
. - Toutes les autres valeurs numériques doivent être écrites sans guillemets simples. Par exemple,
1.287
. - Les valeurs d'horodatage doivent être fournies au format
'2020-06-18T17:24:53Z'
entre guillemets simples. - Les valeurs fractionnées doivent être entourées de parenthèses.
- L'ordre des valeurs des clés de fractionnement doit être le même que celui des clés primaires.
- Si la valeur fractionnée doit comporter une virgule, vous devez l'échapper à l'aide du caractère "\".
- Pour fractionner des index, vous pouvez fournir la clé d'index ou l'index entier et la clé de table complète.
- Vous devez toujours utiliser la clé complète lorsque vous spécifiez le point de fractionnement.
Voici un exemple de fichier montrant comment spécifier les points de fractionnement :
TABLE Singers ('c32ca57a-786c-2268-09d4-95182a9930be')
TABLE Singers ('bb98c7e2-8240-b780-346d-c5d63886594a')
INDEX Order ('5b8bac71-0cb2-95e9-e1b0-89a027525460')
TABLE Payment ('6cf41f21-2d77-318f-c504-816f0068db8b')
INDEX Indx_A (2152120141932780000)
TABLE TableD (0,'7ef9d̦b22-d0e5-6041-8937-4bc6a7ef9db2')
INDEX IndexXYZ ('8762203435012030000',NULL,NULL)
INDEX IndexABC (0, '2020-06-18T17:24:53Z', '2020-06-18T17:24:53Z') TableKey
(123,'ab\,c')
Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :
- SPLITS_FILE : chemin d'accès au fichier de fractionnement.
- INSTANCE_ID : ID de l'instance.
- DATABASE_ID : ID de la base de données.
-
EXPIRATION_DATE : (facultatif) date d'expiration des points de fractionnement. Accepte un code temporel au format
'2020-06-18T17:24:53Z'
. - INITIATOR : (facultatif) initiateur des points de fractionnement.
Exécutez la commande suivante :
Linux, macOS ou Cloud Shell
gcloud spanner databases splits add DATABASE_ID \ --splits-file=SPLITS_FILE \ --instance=INSTANCE_ID \ --split-expiration-date=EXPIRATION_DATE \ --initiator=INITIATOR
Windows (PowerShell)
gcloud spanner databases splits add DATABASE_ID ` --splits-file=SPLITS_FILE ` --instance=INSTANCE_ID ` --split-expiration-date=EXPIRATION_DATE ` --initiator=INITIATOR
Windows (cmd.exe)
gcloud spanner databases splits add DATABASE_ID ^ --splits-file=SPLITS_FILE ^ --instance=INSTANCE_ID ^ --split-expiration-date=EXPIRATION_DATE ^ --initiator=INITIATOR
REST v1
Vous pouvez utiliser la méthode projects.instances.databases.addSplitPoints
pour créer des points de fractionnement.
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- PROJECT_ID : ID du projet.
- INSTANCE_ID : ID de l'instance.
- DATABASE_ID : ID de la base de données.
Méthode HTTP et URL :
POST https://spanner.googleapis.com/v1/projects//instances/ /databases/ :addSplitPoints
Corps JSON de la requête :
{ "split_points": [ { "table": "T1", "index": "T1_IDX", "expire_time": "2023-04-22T10:00:20.021Z", "keys": [ { "key_parts": { "values": [ 3 ] } }, { "key_parts": { "values": [ 10 ] } } ] }, { "table": "T2", "expire_time": "2023-04-22T10:00:20.021Z", "keys": [ { "key_parts": { "values": [ 50 ] } } ] } ] }
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir un code d'état indiquant le succès de l'opération (2xx), ainsi qu'une réponse vide.
Bibliothèques clientes
Go
Java
Node.js
Python
Scénarios d'erreur possibles
Les scénarios suivants peuvent entraîner une erreur lors de la création de points de fractionnement :
- Le nom de table indiqué dans l'entrée de la répartition au niveau de l'index est incorrect.
- Le point de fractionnement au niveau du tableau comporte plusieurs clés.
- Le point de fractionnement au niveau de l'index comporte plus de deux clés.
- Les points de fractionnement sont définis sur des tables ou des index qui ne sont pas définis dans le schéma de la base de données.
- La requête contient des points de fractionnement en double.
Pour en savoir plus sur les quotas et les limites, consultez Quotas et limites.
Afficher les points de fractionnement
Vous pouvez afficher tous les points de fractionnement créés dans votre base de données à l'aide de la consoleGoogle Cloud ou de gcloud CLI :
Console
Pour obtenir le nombre de points de fractionnement en interrogeant la vue SPANNER_SYS.USER_SPLIT_POINTS
dans la console Google Cloud , procédez comme suit :
Ouvrez la page "Instances Spanner".
Sélectionnez les noms de l'instance Spanner et de la base de données que vous souhaitez interroger.
Cliquez sur Spanner Studio dans le panneau de navigation de gauche.
Saisissez la requête suivante dans le champ de texte :
SELECT * FROM SPANNER_SYS.USER_SPLIT_POINTS
Cliquez sur Exécuter la requête.
Un résultat semblable à ce qui suit s'affiche :
TABLE_NAME | INDEX_NAME | INITIATOR | SPLIT_KEY | EXPIRE_TIME |
---|---|---|---|---|
T | CloudAddSplitPointsAPI | T(90,153,4,2024-04-30T17:00:00-07:00,1,2024-05-01,a) | 2025-03-06T09:58:58.007201Z | |
T | T_IDX | CloudAddSplitPointsAPI | Index : T_IDX sur T, clé d'index : (10), clé de table principale : (<begin>,<begin>,<begin>,<begin>,<begin>,<begin>,<begin>) | 2025-03-08T07:33:23.861682Z |
T | T_IDX | CloudAddSplitPointsAPI | Index : T_IDX sur T, clé d'index : (9091), clé de table primaire : (4567,123,4.2,2024-04-30T17:00:00-07:00,1,2024-05-01,a) | 2025-03-08T07:35:25.990007Z |
gcloud
Exécutez la commande gcloud CLI suivante pour afficher les points de fractionnement dans votre base de données :
gcloud spanner databases splits list DATABASE_ID \
--instance INSTANCE_ID
Remplacez les variables suivantes lorsque vous exécutez cette commande :
- INSTANCE_ID : ID de l'instance Spanner.
- DATABASE_ID : ID de la base de données Spanner.
Une réponse semblable à ce qui suit s'affiche :
TABLE_NAME: T
INDEX_NAME:
INITIATOR: CloudAddSplitPointsAPI
SPLIT_KEY: T(90,153,4,2024-04-30T17:00:00-07:00,1,2024-05-01,a)
EXPIRE_TIME: 2025-03-06T09:58:58.007201Z
TABLE_NAME: T
INDEX_NAME: T_IDX
INITIATOR: CloudAddSplitPointsAPI
SPLIT_KEY: Index: T_IDX on T, Index Key: (10), Primary Table Key: (<begin>,<begin>,<begin>,<begin>,<begin>,<begin>,<begin>)
EXPIRE_TIME: 2025-03-08T07:33:23.861682Z
TABLE_NAME: T
INDEX_NAME: T_IDX
INITIATOR: CloudAddSplitPointsAPI
SPLIT_KEY: Index: T_IDX on T, Index Key: (9091), Primary Table Key: (4567,123,4.2,2024-04-30T17:00:00-07:00,1,2024-05-01,a)
EXPIRE_TIME: 2025-03-08T07:35:25.990007Z
Faire expirer un point de fractionnement
Vous pouvez définir une heure d'expiration pour chaque point de fractionnement que vous créez. Pour en savoir plus, consultez Expiration du point de fractionnement. Vous pouvez faire expirer les points de fractionnement à l'aide de Google Cloud CLI ou des API REST.
gcloud
Si vous souhaitez faire expirer des points de fractionnement avec Google Cloud CLI, vous devez créer un fichier contenant tous les fractionnements que vous souhaitez faire expirer et fournir son chemin d'accès à l'aide du paramètre splits-file
dans la commande gcloud CLI. Le fichier ne doit pas dépasser la limite de l'API, qui est de 100 points par requête API. Pour en savoir plus, consultez la page Quotas et limites.
Le fichier doit utiliser le format suivant pour spécifier les points de fractionnement :
ObjectType ObjectName (SplitValue)
ObjectType ObjectName (SplitValue)
ObjectType ObjectName (SplitValue)
Remplacez les variables suivantes lorsque vous créez le fichier :
- ObjectType : type d'objet de la répartition que vous souhaitez faire expirer. Les valeurs valides sont
TABLE
etINDEX
. - ObjectName : nom de la table ou de l'index de la base de données.
- SplitValue : valeur du point de fractionnement que vous souhaitez faire expirer.
Lorsque vous créez les valeurs de point de fractionnement dans le fichier, respectez les règles suivantes :
- Les valeurs de chaîne doivent être entre guillemets simples. Par exemple :
'splitKeyPart'
- Les valeurs booléennes peuvent être
true
oufalse
. - Les valeurs de type de données Spanner
INT64
etNUMERIC
doivent être entre guillemets simples. Par exemple,'123'
ou'99.99'
. - Toutes les autres valeurs numériques doivent être écrites sans guillemets simples. Par exemple,
1.287
. - Les valeurs d'horodatage doivent être fournies au format
'2020-06-18T17:24:53Z'
entre guillemets simples. - Les valeurs fractionnées doivent être entourées de parenthèses.
- L'ordre des valeurs des clés de fractionnement doit être le même que celui des clés primaires.
- Si la valeur fractionnée doit comporter une virgule, vous devez l'échapper à l'aide du caractère "\".
- Pour fractionner des index, vous pouvez fournir la clé d'index ou l'index entier et la clé de table complète.
- Vous devez toujours utiliser la clé complète lorsque vous spécifiez le point de fractionnement.
Voici un exemple de fichier montrant comment spécifier les points de fractionnement :
TABLE Singers ('c32ca57a-786c-2268-09d4-95182a9930be')
TABLE Singers ('bb98c7e2-8240-b780-346d-c5d63886594a')
INDEX Order ('5b8bac71-0cb2-95e9-e1b0-89a027525460')
TABLE Payment ('6cf41f21-2d77-318f-c504-816f0068db8b')
INDEX Indx_A (2152120141932780000)
TABLE TableD (0,'7ef9db22-d0e5-6041-8937-4bc6a7ef9db2')
INDEX IndexXYZ ('8762203435012030000',NULL,NULL)
INDEX IndexABC (0, '2020-06-18T17:24:53Z', '2020-06-18T17:24:53Z') TableKey
(123,'ab\,c')
Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :
- SPLITS_FILE : chemin d'accès au fichier de fractionnement.
- INSTANCE_ID : ID de l'instance.
- DATABASE_ID : ID de la base de données.
-
EXPIRATION_DATE : (facultatif) date d'expiration des points de fractionnement. Accepte un code temporel au format
'2020-06-18T17:24:53Z'
. - INITIATOR : (facultatif) initiateur des points de fractionnement.
Exécutez la commande suivante :
Linux, macOS ou Cloud Shell
gcloud spanner databases splits add DATABASE_ID \ --splits-file=SPLITS_FILE \ --instance=INSTANCE_ID \ --split-expiration-date=EXPIRATION_DATE \ --initiator=INITIATOR
Windows (PowerShell)
gcloud spanner databases splits add DATABASE_ID ` --splits-file=SPLITS_FILE ` --instance=INSTANCE_ID ` --split-expiration-date=EXPIRATION_DATE ` --initiator=INITIATOR
Windows (cmd.exe)
gcloud spanner databases splits add DATABASE_ID ^ --splits-file=SPLITS_FILE ^ --instance=INSTANCE_ID ^ --split-expiration-date=EXPIRATION_DATE ^ --initiator=INITIATOR
REST v1
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- PROJECT_ID : ID du projet.
- INSTANCE_ID : ID de l'instance.
- DATABASE_ID : ID de la base de données.
Méthode HTTP et URL :
POST https://spanner.googleapis.com/v1/projects//instances/ /databases/ :addSplitPoints
Corps JSON de la requête :
{ "split_points": [ { "table": "T1", "index": "T1_IDX", "expire_time": "2023-04-22T10:00:20.021Z", "keys": [ { "key_parts": { "values": [ 3 ] } }, { "key_parts": { "values": [ 10 ] } } ] }, { "table": "T2", "expire_time": "2023-04-22T10:00:20.021Z", "keys": [ { "key_parts": { "values": [ 50 ] } } ] } ] }
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir un code d'état indiquant le succès de l'opération (2xx), ainsi qu'une réponse vide.