Auf dieser Seite wird beschrieben, wie Sie Split-Points in Ihrer Datenbank erstellen und verwalten. Sie können Split-Punkte erstellen, um Ihre Datenbank vorab aufzuteilen und sich so auf einen erwarteten Anstieg des Traffics vorzubereiten. Weitere Informationen zum Vorab-Splitting finden Sie unter Übersicht zum Vorab-Splitting.
Hinweise
-
Um die Berechtigung zu erhalten, die Sie zum Erstellen und Verwalten von Split-Punkten benötigen, bitten Sie Ihren Administrator, Ihnen die IAM-Rolle Cloud Spanner Database Admin (
roles/spanner.databaseAdmin
) für Ihre Instanz zuzuweisen. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.Diese vordefinierte Rolle enthält die Berechtigung
spanner.databases.addSplitPoints
, die zum Erstellen und Verwalten von Split-Punkten erforderlich ist.Sie können diese Berechtigung auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.
Bei den gcloud CLI-Beispielen auf dieser Seite wird von folgenden Annahmen ausgegangen:
- Sie haben die gcloud CLI für die Verwendung mit Spanner eingerichtet. Wenn Sie die gcloud CLI noch nicht mit Spanner verwendet haben, lesen Sie Datenbank mit der gcloud CLI erstellen und abfragen.
Sie haben die gcloud CLI mit Ihrem Projekt konfiguriert. Beispiel:
gcloud config set core/project PROJECT_ID
Achten Sie darauf, dass Ihre Spanner-Instanz genügend Knoten hat, um den erwarteten Anstieg des Traffics zu bewältigen. Weitere Informationen finden Sie unter Übersicht über das Aufteilen von Daten.
Aufteilungspunkte erstellen
Sie können Split-Points mit der Google Cloud CLI oder den REST APIs erstellen.
gcloud
Wenn Sie Split-Punkte mit der Google Cloud CLI erstellen möchten, müssen Sie eine Datei mit allen Splits erstellen und den Pfad im gcloud CLI-Befehl angeben. Die Datei darf das API-Limit von 100 Punkten pro API-Anfrage nicht überschreiten. Weitere Informationen finden Sie unter Kontingente und Limits.
Die Datei muss das folgende Format haben, um die Aufteilungspunkte anzugeben:
ObjectType ObjectName (SplitValue1)
ObjectType ObjectName (SplitValue2)
ObjectType ObjectName (SplitValueN)
Ersetzen Sie beim Erstellen der Datei die folgenden Variablen:
- ObjectType: Der Objekttyp, in den Sie Aufteilungen einfügen möchten. Gültige Werte sind
TABLE
undINDEX
. - ObjectName: der Name der Datenbanktabelle oder des Index.
- SplitValue1..N: Die Werte für die Aufteilungspunkte, an denen Sie die Aufteilungen vornehmen möchten.
Beachten Sie beim Erstellen der Split-Point-Werte in der Datei die folgenden Regeln:
- String-Werte müssen in einfache Anführungszeichen gesetzt werden. Beispiel:
'splitKeyPart'
- Boolesche Werte müssen entweder
true
oderfalse
sein. INT64
- undNUMERIC
-Spanner-Datentypwerte müssen in einfachen Anführungszeichen stehen. Beispiel:'123'
oder'99.99'
.- Alle anderen numerischen Werte müssen ohne einfache Anführungszeichen geschrieben werden. Beispiel:
1.287
- Zeitstempelwerte sollten im Format
'2020-06-18T17:24:53Z'
in einfachen Anführungszeichen angegeben werden. - Die Werte für die Aufteilung müssen in Klammern eingeschlossen werden.
- Die Reihenfolge der Werte für die Aufteilungsschlüssel muss mit der Reihenfolge der Primärschlüssel übereinstimmen.
- Wenn der geteilte Wert ein Komma enthalten muss, müssen Sie das Komma mit einem `\`-Zeichen maskieren.
- Zum Aufteilen von Indexen können Sie entweder den Indexschlüssel oder den gesamten Index und den vollständigen Tabellenschlüssel angeben.
- Sie müssen immer den vollständigen Schlüssel angeben, wenn Sie den Split-Punkt festlegen.
Im Folgenden finden Sie eine Beispieldatei, in der die Aufteilungspunkte angegeben sind:
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')
Ersetzen Sie folgende Werte, bevor sie einen der Befehlsdaten verwenden:
- SPLITS_FILE: Der Pfad zur Datei mit den Segmenten.
- INSTANCE_ID: Instanz-ID.
- DATABASE_ID: die Datenbank-ID.
-
EXPIRATION_DATE:
(optional) Das Ablaufdatum der Aufteilungspunkte. Akzeptiert einen Zeitstempel im Format
'2020-06-18T17:24:53Z'
. - INITIATOR: (optional) Der Initiator der Aufteilungspunkte.
Führen Sie folgenden Befehl aus:
Linux, macOS oder 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 Version 1
Mit der Methode projects.instances.databases.addSplitPoints
können Sie Split-Punkte erstellen.
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- PROJECT_ID: Projekt-ID.
- INSTANCE_ID: Instanz-ID.
- DATABASE_ID: die Datenbank-ID.
HTTP-Methode und URL:
POST https://spanner.googleapis.com/v1/projects//instances/ /databases/ :addSplitPoints
JSON-Text anfordern:
{ "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 ] } } ] } ] }
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten einen erfolgreichen Statuscode (2xx) und eine leere Antwort als Ausgabe erhalten.
Clientbibliotheken
Go
Java
Node.js
Python
Mögliche Fehlerszenarien
Die folgenden Szenarien können zu einem Fehler beim Erstellen von Split-Punkten führen:
- Für die Aufteilung nach Indexebene wurde im Input ein falscher Tabellenname angegeben.
- Der Aufteilungspunkt auf Tabellenebene hat mehr als einen Schlüssel.
- Der Aufteilungspunkt auf Indexebene hat mehr als zwei Schlüssel.
- Die Aufteilungspunkte sind für Tabellen oder Indexe definiert, die nicht im Datenbankschema definiert sind.
- Die Anfrage enthält doppelte Aufteilungspunkte.
Weitere Informationen zu Kontingenten und Limits finden Sie unter Kontingente und Limits.
Aufspaltungspunkte ansehen
Sie können alle erstellten Split-Punkte in Ihrer Datenbank über dieGoogle Cloud Console oder die gcloud CLI aufrufen:
Console
So rufen Sie die Anzahl der Aufteilungspunkte ab, indem Sie die Ansicht SPANNER_SYS.USER_SPLIT_POINTS
in der Google Cloud Console abfragen:
Öffnen Sie die Seite „Spanner-Instanzen“.
Wählen Sie die Namen der Spanner-Instanz und der Datenbank aus, die Sie abfragen möchten.
Klicken Sie im linken Navigationsbereich auf Spanner Studio.
Geben Sie die folgende Abfrage in das Textfeld ein:
SELECT * FROM SPANNER_SYS.USER_SPLIT_POINTS
Klicken Sie auf Abfrage ausführen.
Es wird ein Ergebnis wie das folgende angezeigt:
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 für T, Indexschlüssel: (10), Primärtabellenschlüssel: (<begin>,<begin>,<begin>,<begin>,<begin>,<begin>,<begin>) | 2025-03-08T07:33:23.861682Z |
T | T_IDX | CloudAddSplitPointsAPI | Index: T_IDX für T, Indexschlüssel: (9091), Primärtabellenschlüssel: (4567,123,4.2,2024-04-30T17:00:00-07:00,1,2024-05-01,a) | 2025-03-08T07:35:25.990007Z |
gcloud
Führen Sie den folgenden gcloud CLI-Befehl aus, um die Aufteilungspunkte in Ihrer Datenbank aufzurufen:
gcloud spanner databases splits list DATABASE_ID \
--instance INSTANCE_ID
Ersetzen Sie beim Ausführen dieses Befehls die folgenden Variablen:
- INSTANCE_ID: Die Spanner-Instanz-ID.
- DATABASE_ID: Die Spanner-Datenbank-ID.
Es wird eine Antwort ähnlich der folgenden angezeigt:
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
Split-Point ablaufen lassen
Sie können für jeden erstellten Split-Punkt eine Ablaufzeit festlegen. Weitere Informationen finden Sie unter Ablauf des Split-Punkts. Sie können Split-Punkte mit der Google Cloud CLI oder den REST APIs ablaufen lassen.
gcloud
Wenn Sie Split-Punkte mit der Google Cloud CLI ablaufen lassen möchten, müssen Sie eine Datei erstellen, die alle Splits enthält, die Sie ablaufen lassen möchten, und deren Pfad mit dem Parameter splits-file
im gcloud CLI-Befehl angeben. Die Datei darf das API-Limit von 100 Punkten pro API-Anfrage nicht überschreiten. Weitere Informationen finden Sie unter Kontingente und Limits.
Die Datei muss das folgende Format haben, um die Aufteilungspunkte anzugeben:
ObjectType ObjectName (SplitValue)
ObjectType ObjectName (SplitValue)
ObjectType ObjectName (SplitValue)
Ersetzen Sie beim Erstellen der Datei die folgenden Variablen:
- ObjectType: Der Objekttyp des Splits, den Sie beenden möchten. Gültige Werte sind
TABLE
undINDEX
. - ObjectName: der Name der Datenbanktabelle oder des Index.
- SplitValue: Der Wert des Aufteilungspunkts, der ablaufen soll.
Beachten Sie beim Erstellen der Split-Point-Werte in der Datei die folgenden Regeln:
- String-Werte müssen in einfache Anführungszeichen gesetzt werden. Beispiel:
'splitKeyPart'
- Boolesche Werte können entweder
true
oderfalse
sein. INT64
- undNUMERIC
-Spanner-Datentypwerte müssen in einfachen Anführungszeichen stehen. Beispiel:'123'
oder'99.99'
.- Alle anderen numerischen Werte müssen ohne einfache Anführungszeichen geschrieben werden. Beispiel:
1.287
- Zeitstempelwerte sollten im Format
'2020-06-18T17:24:53Z'
in einfachen Anführungszeichen angegeben werden. - Die Werte für die Aufteilung müssen in Klammern eingeschlossen werden.
- Die Reihenfolge der Werte für die Aufteilungsschlüssel muss mit der Reihenfolge der Primärschlüssel übereinstimmen.
- Wenn der geteilte Wert ein Komma enthalten muss, müssen Sie das Komma mit einem `\`-Zeichen maskieren.
- Zum Aufteilen von Indexen können Sie entweder den Indexschlüssel oder den gesamten Index und den vollständigen Tabellenschlüssel angeben.
- Sie müssen immer den vollständigen Schlüssel angeben, wenn Sie den Split-Punkt festlegen.
Im Folgenden finden Sie eine Beispieldatei, in der die Aufteilungspunkte angegeben sind:
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')
Ersetzen Sie folgende Werte, bevor sie einen der Befehlsdaten verwenden:
- SPLITS_FILE: Der Pfad zur Datei mit den Segmenten.
- INSTANCE_ID: Instanz-ID.
- DATABASE_ID: die Datenbank-ID.
-
EXPIRATION_DATE:
(optional) Das Ablaufdatum der Aufteilungspunkte. Akzeptiert einen Zeitstempel im Format
'2020-06-18T17:24:53Z'
. - INITIATOR: (optional) Der Initiator der Aufteilungspunkte.
Führen Sie folgenden Befehl aus:
Linux, macOS oder 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 Version 1
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- PROJECT_ID: Projekt-ID.
- INSTANCE_ID: Instanz-ID.
- DATABASE_ID: die Datenbank-ID.
HTTP-Methode und URL:
POST https://spanner.googleapis.com/v1/projects//instances/ /databases/ :addSplitPoints
JSON-Text anfordern:
{ "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 ] } } ] } ] }
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten einen erfolgreichen Statuscode (2xx) und eine leere Antwort als Ausgabe erhalten.