Halaman ini menjelaskan cara membuat dan mengelola titik pemisahan di database Anda. Anda dapat membuat titik pemisahan untuk memisahkan database sebelumnya guna membantu mempersiapkan peningkatan traffic yang diantisipasi. Untuk mengetahui informasi selengkapnya tentang pra-pemisahan, lihat Ringkasan pra-pemisahan.
Sebelum memulai
-
Untuk mendapatkan izin yang Anda perlukan untuk membuat dan mengelola titik pemisahan, minta administrator untuk memberi Anda peran IAM Cloud Spanner Database Admin (
roles/spanner.databaseAdmin
) di instance Anda. Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.Peran bawaan ini berisi izin
spanner.databases.addSplitPoints
, yang diperlukan untuk membuat dan mengelola titik pemisahan.Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.
Contoh gcloud CLI di halaman ini membuat asumsi berikut:
- Anda telah menyiapkan gcloud CLI untuk digunakan dengan Spanner. Jika Anda baru menggunakan gcloud CLI dengan Spanner, lihat Membuat dan membuat kueri database menggunakan gcloud CLI.
Anda telah mengonfigurasi gcloud CLI dengan project Anda. Contoh:
gcloud config set core/project PROJECT_ID
Pastikan instance Spanner Anda memiliki cukup node untuk mendukung peningkatan traffic yang diantisipasi. Untuk mengetahui informasi selengkapnya, lihat Ringkasan pra-pemisahan.
Membuat titik pemisahan
Anda dapat membuat titik pemisahan menggunakan Google Cloud CLI atau REST API.
gcloud
Jika ingin membuat titik pemisahan menggunakan Google Cloud CLI, Anda perlu membuat file yang berisi semua pemisahan dan memberikan jalur dalam perintah gcloud CLI. File tidak boleh melebihi batas API, yaitu 100 titik per permintaan API. Untuk mengetahui informasi selengkapnya, silakan melihat Kuota dan batas.
File harus menggunakan format berikut untuk menentukan titik pemisahan:
ObjectType ObjectName (SplitValue1)
ObjectType ObjectName (SplitValue2)
ObjectType ObjectName (SplitValueN)
Ganti variabel berikut saat membuat file:
- ObjectType: jenis objek yang ingin Anda tambahi pemisahan. Nilai
yang valid adalah
TABLE
danINDEX
. - ObjectName: nama tabel atau indeks database.
- SplitValue1..N: nilai titik pemisahan tempat Anda ingin memperkenalkan pemisahan.
Gunakan aturan berikut saat membuat nilai titik pemisahan dalam file:
- Nilai string harus berada dalam tanda kutip tunggal. Contoh,
'splitKeyPart'
- Nilai boolean harus berupa
true
ataufalse
. - Nilai jenis data Spanner
INT64
danNUMERIC
harus berada dalam tanda petik tunggal. Misalnya,'123'
atau'99.99'
. - Semua nilai angka lainnya harus ditulis tanpa tanda petik tunggal. Misalnya,
1.287
. - Nilai stempel waktu harus diberikan dalam format
'2020-06-18T17:24:53Z'
dalam tanda kutip tunggal. - Nilai yang dipisah harus diapit oleh tanda kurung.
- Urutan nilai kunci pemisahan harus sama dengan urutan kunci utama.
- Jika nilai yang dipisahkan harus memiliki koma, Anda harus meng-escape koma menggunakan karakter `\`.
- Untuk membagi indeks, Anda dapat memberikan kunci indeks atau seluruh indeks dan kunci tabel lengkap.
- Anda harus selalu menggunakan kunci lengkap saat menentukan titik pemisahan.
Berikut adalah contoh file yang menunjukkan cara menentukan titik pemisahan:
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')
Sebelum menggunakan salah satu data perintah di bawah, lakukan penggantian berikut:
- SPLITS_FILE: jalur ke file pemisahan.
- INSTANCE_ID: ID instance.
- DATABASE_ID: ID database.
-
EXPIRATION_DATE:
(opsional) tanggal habis masa berlaku titik pemisahan. Menerima stempel waktu dalam
format
'2020-06-18T17:24:53Z'
. - INITIATOR: (opsional) inisiator titik pemisahan.
Jalankan perintah berikut:
Linux, macOS, atau 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
Anda dapat menggunakan metode
projects.instances.databases.addSplitPoints
untuk membuat titik pemisahan.
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- PROJECT_ID: project ID.
- INSTANCE_ID: ID instance.
- DATABASE_ID: ID database.
Metode HTTP dan URL:
POST https://spanner.googleapis.com/v1/projects//instances/ /databases/ :addSplitPoints
Meminta isi JSON:
{ "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 ] } } ] } ] }
Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:
Anda akan menerima kode status yang menandakan proses berhasil (2xx), dan sebuah respons kosong.
Library klien
Go
Java
Node.js
Python
Kemungkinan skenario error
Skenario berikut dapat menyebabkan error saat membuat titik pemisahan:
- Pemisahan tingkat indeks memiliki nama tabel yang salah dalam input.
- Titik pemisahan tingkat tabel memiliki lebih dari satu kunci.
- Titik pemisahan tingkat indeks memiliki lebih dari dua kunci.
- Titik pemisahan ditentukan pada tabel atau indeks yang tidak ditentukan dalam skema database.
- Permintaan berisi titik pemisahan duplikat.
Untuk mengetahui informasi tentang kuota dan batas, lihat Kuota dan batas.
Melihat titik pemisahan
Anda dapat melihat semua titik pemisahan yang dibuat di database menggunakan konsolGoogle Cloud atau gcloud CLI:
Konsol
Untuk mendapatkan jumlah titik pemisahan dengan membuat kueri tampilan SPANNER_SYS.USER_SPLIT_POINTS
di konsol Google Cloud , lakukan hal berikut:
Buka halaman instance Spanner.
Pilih nama instance Spanner dan database yang ingin Anda kueri.
Klik Spanner Studio di panel navigasi kiri.
Ketik kueri berikut di kolom teks:
SELECT * FROM SPANNER_SYS.USER_SPLIT_POINTS
Klik Run query.
Hasil yang mirip dengan berikut akan muncul:
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 | Indeks: T_IDX pada T, Kunci Indeks: (10), Kunci Tabel Utama: (<begin>,<begin>,<begin>,<begin>,<begin>,<begin>,<begin>) | 2025-03-08T07:33:23.861682Z |
T | T_IDX | CloudAddSplitPointsAPI | Indeks: T_IDX pada T, Kunci Indeks: (9091), Kunci Tabel Utama: (4567,123,4.2,2024-04-30T17:00:00-07:00,1,2024-05-01,a) | 2025-03-08T07:35:25.990007Z |
gcloud
Jalankan perintah gcloud CLI berikut untuk melihat titik pemisahan di database Anda:
gcloud spanner databases splits list DATABASE_ID \
--instance INSTANCE_ID
Ganti variabel berikut saat menjalankan perintah ini:
- INSTANCE_ID: ID instance Spanner.
- DATABASE_ID: ID database Spanner.
Respons yang mirip dengan berikut akan muncul:
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
Cara mengakhiri titik pemisahan
Anda dapat menetapkan waktu habis masa berlaku untuk setiap titik pemisahan yang Anda buat. Untuk mengetahui informasi selengkapnya, lihat Masa berlaku titik pemisahan. Anda dapat mengakhiri masa berlaku titik pemisahan menggunakan Google Cloud CLI atau REST API.
gcloud
Jika ingin mengakhiri titik pemisahan menggunakan Google Cloud CLI, Anda perlu membuat file yang berisi semua pemisahan yang ingin diakhiri dan memberikan jalur file tersebut menggunakan parameter splits-file
dalam perintah gcloud CLI. File tidak boleh melebihi batas API, yaitu 100
titik per permintaan API. Untuk mengetahui informasi selengkapnya, lihat Kuota dan batas.
File harus menggunakan format berikut untuk menentukan titik pemisahan:
ObjectType ObjectName (SplitValue)
ObjectType ObjectName (SplitValue)
ObjectType ObjectName (SplitValue)
Ganti variabel berikut saat membuat file:
- ObjectType: jenis objek pemisahan yang ingin Anda hapus masa berlakunya. Nilai
yang valid adalah
TABLE
danINDEX
. - ObjectName: nama tabel atau indeks database.
- SplitValue: nilai titik pemisahan yang ingin Anda hapus.
Gunakan aturan berikut saat membuat nilai titik pemisahan dalam file:
- Nilai string harus berada dalam tanda kutip tunggal. Contoh,
'splitKeyPart'
- Nilai boolean dapat berupa
true
ataufalse
. - Nilai jenis data Spanner
INT64
danNUMERIC
harus berada dalam tanda petik tunggal. Misalnya,'123'
atau'99.99'
. - Semua nilai angka lainnya harus ditulis tanpa tanda petik tunggal. Misalnya,
1.287
. - Nilai stempel waktu harus diberikan dalam format
'2020-06-18T17:24:53Z'
dalam tanda kutip tunggal. - Nilai yang dipisah harus diapit oleh tanda kurung.
- Urutan nilai kunci pemisahan harus sama dengan urutan kunci utama.
- Jika nilai yang dipisahkan harus memiliki koma, Anda harus meng-escape koma menggunakan karakter `\`.
- Untuk membagi indeks, Anda dapat memberikan kunci indeks atau seluruh indeks dan kunci tabel lengkap.
- Anda harus selalu menggunakan kunci lengkap saat menentukan titik pemisahan.
Berikut adalah contoh file yang menunjukkan cara menentukan titik pemisahan:
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')
Sebelum menggunakan salah satu data perintah di bawah, lakukan penggantian berikut:
- SPLITS_FILE: jalur ke file pemisahan.
- INSTANCE_ID: ID instance.
- DATABASE_ID: ID database.
-
EXPIRATION_DATE:
(opsional) tanggal habis masa berlaku titik pemisahan. Menerima stempel waktu dalam
format
'2020-06-18T17:24:53Z'
. - INITIATOR: (opsional) inisiator titik pemisahan.
Jalankan perintah berikut:
Linux, macOS, atau 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
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- PROJECT_ID: project ID.
- INSTANCE_ID: ID instance.
- DATABASE_ID: ID database.
Metode HTTP dan URL:
POST https://spanner.googleapis.com/v1/projects//instances/ /databases/ :addSplitPoints
Meminta isi JSON:
{ "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 ] } } ] } ] }
Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:
Anda akan menerima kode status yang menandakan proses berhasil (2xx), dan sebuah respons kosong.