Halaman ini menjelaskan dan menerangkan cara menggunakan lease baca Spanner. Rilis baca membantu database dan penempatan Anda mengurangi latensi baca yang kuat di region baca-tulis atau hanya baca dengan biaya latensi tulis yang lebih tinggi.
Secara default, saat Spanner menerima permintaan baca yang kuat di region non-pemimpin, replika yang melayani bacaan akan menghubungi region baca-tulis pemimpin instance. Kontak ini mengonfirmasi bahwa datanya sudah terbaru sebelum menayangkan permintaan. Proses ini menimbulkan perjalanan pulang pergi jaringan antara region yang menerima permintaan dan region leader. Tidak seperti komunikasi dalam satu region, jarak geografis antar-region akan menambah latensi permintaan.
Menggunakan lease baca Spanner menghilangkan kebutuhan akan round trip ini. Saat Anda menetapkan satu atau beberapa region sewa baca untuk database atau penempatan, Spanner akan memberikan hak kepada region tersebut untuk menayangkan pembacaan yang konsisten secara lokal. Hal ini memungkinkan region non-pemimpin untuk langsung melayani bacaan kuat tanpa berkomunikasi dengan region pemimpin. Menayangkan pembacaan yang kuat dari region non-pemimpin yang lebih dekat dengan klien akan mengurangi latensi di seluruh region. Hal ini mencapai latensi intra-region untuk pembacaan kuat di instance dual-region atau multi-region. Jika sewa baca diaktifkan, bacaan kuat dalam transaksi hanya baca ditayangkan secara lokal tanpa menghubungi pemimpin. Untuk transaksi baca-tulis, operasi baca masih diarahkan ke region pemimpin kecuali jika Anda menggunakan isolasi baca yang dapat diulang dengan perutean yang kompatibel dengan pemimpin dinonaktifkan.
Mengaktifkan atau menonaktifkan fitur sewa baca di suatu region tidak memerlukan waktu nonaktif. Namun, penulisan mengalami latensi yang lebih tinggi saat Anda menggunakan fitur ini, karena mengaktifkan sewa baca mengharuskan pemimpin menghubungi region sewa baca saat melayani penulisan. Sebagai efek samping, operasi tulis menahan kunci lebih lama, yang dapat memengaruhi beban kerja tulis dengan persaingan tinggi. Untuk mengetahui informasi selengkapnya, lihat Kapan harus menggunakan sewa baca. Lease baca paling cocok untuk aplikasi yang bersedia mengorbankan peningkatan latensi tulis demi pembacaan kuat yang lebih cepat. Misalnya, sistem kontrol akses yang workload-nya sering membaca, tetapi jarang menulis.
Untuk mempelajari cara mengaktifkan sewa baca, lihat Menggunakan sewa baca.
Kapan harus menggunakan sewa baca
Aktifkan sewa baca jika aplikasi dan workload Anda memenuhi kriteria berikut:
- Latensi rendah untuk operasi baca yang kuat lebih penting daripada latensi rendah untuk operasi tulis.
- Workload Anda dapat mentoleransi durasi penguncian tulis yang lebih lama, atau memiliki pertentangan tulis yang rendah.
Jika ada operasi tulis serentak, pilihan antara menggunakan API kueri atau API baca akan memengaruhi performa database yang menggunakan region sewa baca.
Untuk mempelajari lebih lanjut latensi pemantauan, lihat Monitor.
Contoh kasus penggunaan
Pertimbangkan aplikasi yang di-deploy secara global yang melakukan penulisan di AS dan memiliki klien di AS, Eropa, dan Asia. Anda dapat mengonfigurasi instance Spanner multi-region, seperti nam-eur-asia1, dengan region pemimpin di us-central1 dan replika hanya baca di europe-west1 dan asia-east1.
Saat Anda mengaktifkan sewa baca di region hanya baca europe-west1 dan asia-east1, Spanner akan menyajikan pembacaan yang kuat dari Eropa dan Asia dari replika lokal tersebut, sehingga mengurangi latensi. Sebagai gantinya, latensi tulis akan meningkat untuk semua operasi tulis. Peningkatan latensi setara dengan waktu bolak-balik antara region us-central1 pemimpin dan region sewa baca terjauh.
Batasan
Penyewaan baca Spanner memiliki batasan berikut:
- Lease baca tidak mengurangi latensi untuk pembacaan yang merupakan bagian dari transaksi baca-tulis. Jika Anda ingin mencapai latensi intra-region untuk operasi baca dalam transaksi baca-tulis, Anda harus menggunakan tingkat isolasi repeatable read dan menonaktifkan perutean yang kompatibel dengan pemimpin untuk menggunakan lease baca. Meskipun menggunakan isolasi baca yang dapat diulang, bacaan dalam transaksi baca-tulis mungkin masih diarahkan ke region pemimpin, terutama setelah penulisan terjadi dalam transaksi, untuk memastikan konsistensi baca-tulis Anda.
- Jika Anda memindahkan instance ke konfigurasi instance yang berbeda, setelan sewa baca tidak akan dipertahankan. Anda harus mengaktifkan kembali sewa baca di database setelah pemindahan selesai.
- Anda tidak dapat menonaktifkan atau mengubah region sewa baca pada penempatan yang ada.
Batasan ini dapat berubah atau dihapus setelah rilis ketersediaan umum geo-partitioning atau setelahnya. Jika Anda ingin menonaktifkan sewa baca di penempatan yang ada, lakukan hal berikut:
- Buat penempatan baru tanpa menentukan opsi sewa baca atau dengan sewa baca wilayah yang berbeda yang ingin Anda gunakan.
- Gunakan DML berpartisi untuk memperbarui penempatan data Anda ke penempatan baru. Pembaruan ini memulai proses latar belakang untuk memindahkan data. Spanner dapat memindahkan sekitar 10 baris penempatan per detik untuk setiap node di partisi instance tujuan Anda. Penggunaan CPU Anda mungkin terpengaruh selama periode ini karena pemindahan.
- Lepaskan penempatan asli setelah pemindahan data selesai.
Menggunakan sewa baca
Anda harus mengaktifkan sewa baca sebelum dapat menggunakannya.
Kontrol akses dengan IAM
Untuk menetapkan region sewa baca, pengguna memerlukan izin IAM spanner.databases.create atau
spanner.databases.updateDdl. Peran Admin Database (roles/spanner.databaseAdmin)
yang telah ditetapkan mencakup izin ini. Untuk mengetahui informasi selengkapnya, lihat
Ringkasan IAM untuk Spanner.
Untuk mengetahui informasi tentang cara memberikan izin, lihat Menerapkan izin IAM.
Sebelum Anda memulai untuk pengguna database PostgreSQL
Jika Anda ingin menggunakan lease baca di database PostgreSQL, lakukan salah satu perubahan konfigurasi berikut pada database Anda. Jika tidak, operasi baca Anda tetap ditayangkan oleh wilayah pemimpin meskipun Anda telah menetapkan wilayah sewa baca.
Jika hanya menggunakan transaksi hanya baca, konfigurasi koneksi PostgreSQL Anda sehingga status default setiap transaksi baru dalam database ditetapkan ke hanya baca. Untuk melakukannya, setel opsi
default_transaction_read_onlyketrue.postgres://USER_ID:PASSWORD@localhost:5432/DATABASE_ID?sslmode=disable&options=-c \ default_transaction_read_only=true host=/tmp port=5432 database=DATABASE_ID \ options='-c default_transaction_read_only=true'Ganti kode berikut:
USER_ID dengan ID unik pengguna Anda.
PASSWORD dengan sandi Anda.
DATABASE_ID dengan ID unik database Anda.
Jika Anda ingin mencapai latensi baca dalam transaksi baca-tulis intra-region atau Anda tidak selalu dapat mengganti opsi koneksi, gunakan tingkat isolasi baca yang dapat diulang dan nonaktifkan perutean yang kompatibel dengan pemimpin. Setelan ini diperlukan meskipun transaksi baca-tulis Anda hanya memiliki bacaan. Jika tidak, operasi baca dalam transaksi baca-tulis selalu diarahkan ke region pemimpin. Dalam transaksi tersebut, sewa baca dinonaktifkan setelah pernyataan DML tulis pertama muncul. Hal ini karena operasi tulis selalu diarahkan ke region pemimpin. Oleh karena itu, untuk membaca penulisan Anda, pembacaan berikutnya juga harus dilakukan di region pemimpin.
postgres://USER_ID:PASSWORD@localhost:5432/DATABASE_ID?sslmode=disable&options=-c \ default_isolation_level=REPEATABLE_READ -c routeToLeader=false host=/tmp port=5432 database=DATABASE_ID \ options='-c default_isolation_level=REPEATABLE_READ -c routeToLeader=false'
Mengaktifkan bacaan sewa
Untuk mengaktifkan sewa baca saat Anda membuat database baru, tetapkan opsi
read_lease_regions dalam pernyataan DDL ALTER DATABASE
(GoogleSQL,
PostgreSQL):
Konsol
Buka halaman Instances di konsol Google Cloud .
Pilih instance tempat Anda ingin mengaktifkan sewa baca.
Di halaman Instance overview yang terbuka, klik Create database.
Untuk nama database, masukkan nama.
Pilih dialek database.
Klik Create.
Konsol Google Cloud menampilkan halaman Ringkasan untuk database yang Anda buat.
Di menu navigasi, klik Spanner Studio.
Di halaman Spanner Studio, klik Tab baru atau gunakan tab editor yang kosong.
Masukkan pernyataan DDL
ALTER DATABASEberikut.GoogleSQL
ALTER DATABASE DATABASE_ID SET OPTIONS (read_lease_regions = 'READ_LEASE_REGION');Ganti kode berikut:
DATABASE_ID dengan ID unik database Anda.
READ_LEASE_REGION dengan satu atau beberapa region tempat Anda ingin mengaktifkan sewa baca. Contoh,
europe-west1, europe-west4.
PostgreSQL
ALTER DATABASE DATABASE_ID SET "spanner.read_lease_regions" = 'READ_LEASE_REGION';Ganti kode berikut:
DATABASE_ID dengan ID unik database Anda.
READ_LEASE_REGION dengan satu atau beberapa region tempat Anda ingin mengaktifkan sewa baca. Contoh,
europe-west1, europe-west4.
Klik Run.
gcloud
Untuk menetapkan opsi database read_lease_regions saat membuat database,
gunakan gcloud spanner databases create.
GoogleSQL
gcloud spanner databases create DATABASE_ID \
--instance=INSTANCE_ID \
--ddl="ALTER DATABASE DATABASE_ID SET OPTIONS (read_lease_regions = 'READ_LEASE_REGION');"
Ganti kode berikut:
DATABASE_ID: ID untuk database Spanner Anda.INSTANCE_ID: ID untuk instance Spanner Anda.READ_LEASE_REGION: region tempat Anda ingin mengaktifkan sewa baca. Contoh,europe-west1. Anda dapat mengaktifkan sewa baca untuk beberapa wilayah. Pisahkan setiap wilayah dengan koma.
PostgreSQL
gcloud spanner databases create DATABASE_ID \
--instance=INSTANCE_ID \
--ddl="ALTER DATABASE DATABASE_ID \
SET "spanner.read_lease_regions" = 'READ_LEASE_REGION';"
Ganti kode berikut:
DATABASE_ID: ID untuk database Spanner Anda.INSTANCE_ID: ID untuk instance Spanner Anda.READ_LEASE_REGION: region tempat Anda ingin mengaktifkan sewa baca. Contoh,europe-west1. Anda dapat mengaktifkan sewa baca untuk beberapa wilayah. Pisahkan setiap wilayah dengan koma.
Untuk mengaktifkan sewa baca saat Anda memperbarui database yang ada, tetapkan opsi
read_lease_regions dalam pernyataan DDL ALTER DATABASE (GoogleSQL,
PostgreSQL):
Konsol
Buka halaman Instances di konsol Google Cloud .
Pilih instance tempat Anda ingin mengaktifkan sewa baca.
Pilih database tempat Anda ingin mengaktifkan sewa baca.
Di menu navigasi, klik Spanner Studio.
Di halaman Spanner Studio, klik Tab baru atau gunakan tab editor yang kosong.
Masukkan pernyataan DDL
ALTER DATABASEberikut.GoogleSQL
ALTER DATABASE DATABASE_ID \ SET OPTIONS (read_lease_regions = 'READ_LEASE_REGION');Ganti kode berikut:
DATABASE_ID dengan ID unik database Anda.
READ_LEASE_REGION dengan satu atau beberapa region tempat Anda ingin mengaktifkan sewa baca. Contoh,
europe-west1, europe-west4.
PostgreSQL
ALTER DATABASE DATABASE_ID \ SET "spanner.read_lease_regions" = 'READ_LEASE_REGION';Ganti kode berikut:
DATABASE_ID dengan ID unik database Anda.
READ_LEASE_REGION dengan satu atau beberapa region tempat Anda ingin mengaktifkan sewa baca. Contoh,
europe-west1, europe-west4.
Klik Run.
gcloud
Untuk menetapkan opsi database read_lease_regions, gunakan
gcloud spanner databases ddl update.
GoogleSQL
gcloud spanner databases ddl update DATABASE_ID \
--instance=INSTANCE_ID \
--ddl="ALTER DATABASE DATABASE_ID \
SET OPTIONS (read_lease_regions = 'READ_LEASE_REGION');"
Ganti kode berikut:
DATABASE_ID: ID untuk database Spanner Anda.INSTANCE_ID: ID untuk instance Spanner Anda.- READ_LEASE_REGION dengan satu atau beberapa region tempat Anda ingin mengaktifkan sewa baca. Contoh,
europe-west1, europe-west4.
PostgreSQL
gcloud spanner databases ddl update DATABASE_ID \
--instance=INSTANCE_ID \
--ddl="ALTER DATABASE DATABASE_ID \
SET "spanner.read_lease_regions" = 'READ_LEASE_REGION';"
Ganti kode berikut:
DATABASE_ID: ID untuk database Spanner Anda.INSTANCE_ID: ID untuk instance Spanner Anda.- READ_LEASE_REGION dengan satu atau beberapa region tempat Anda ingin mengaktifkan sewa baca. Contoh,
europe-west1, europe-west4.
Untuk mengaktifkan sewa baca saat Anda membuat penempatan baru, gunakan opsi
read_lease_regions dalam pernyataan DDL CREATE PLACEMENT
(GoogleSQL,
PostgreSQL)
untuk menetapkan satu atau beberapa region tempat Anda ingin menggunakan sewa baca:
Konsol
Buka halaman Instances di konsol Google Cloud .
Pilih instance tempat Anda ingin mengaktifkan sewa baca.
Pilih database tempat Anda ingin mengaktifkan sewa baca untuk penempatan.
Di menu navigasi, klik Spanner Studio.
Di halaman Spanner Studio, klik Tab baru atau gunakan tab editor yang kosong.
Masukkan pernyataan DDL
CREATE PLACEMENTberikut.GoogleSQL
CREATE PLACEMENT PLACEMENT_NAME OPTIONS (instance_partition="PARTITION_ID", read_lease_regions = 'READ_LEASE_REGION');Ganti kode berikut:
- PLACEMENT_NAME dengan nama penempatan Anda.
- PARTITION_ID dengan ID unik partisi yang akan dikaitkan dengan penempatan.
- READ_LEASE_REGION dengan satu atau beberapa region tempat Anda ingin mengaktifkan sewa baca. Contoh,
europe-west1, europe-west4.
PostgreSQL
CREATE PLACEMENT PLACEMENT_NAME WITH (instance_partition='PARTITION_ID', read_lease_regions = 'READ_LEASE_REGION';Ganti kode berikut:
- PLACEMENT_NAME dengan nama penempatan Anda.
- PARTITION_ID dengan ID unik partisi yang akan dikaitkan dengan penempatan.
- READ_LEASE_REGION dengan satu atau beberapa region tempat Anda ingin mengaktifkan sewa baca. Contoh,
europe-west1, europe-west4.
Klik Run.
gcloud
Untuk menetapkan opsi database read_lease_regions untuk penempatan, gunakan
gcloud spanner databases ddl update
dengan pernyataan CREATE PLACEMENT.
GoogleSQL
gcloud spanner databases ddl update DATABASE_ID \
--instance=INSTANCE_ID \
--ddl="CREATE PLACEMENT PLACEMENT_NAME OPTIONS (instance_partition=\"PARTITION_ID\", read_lease_regions = 'READ_LEASE_REGION');"`
Ganti kode berikut:
DATABASE_ID: ID untuk database Spanner Anda.INSTANCE_ID: ID untuk instance Spanner Anda.PLACEMENT_NAME: nama penempatan Anda.PARTITION_ID: ID unik partisi yang akan dikaitkan dengan penempatan.- READ_LEASE_REGION dengan satu atau beberapa region tempat Anda ingin mengaktifkan sewa baca. Contoh,
europe-west1, europe-west4.
PostgreSQL
gcloud spanner databases ddl update DATABASE_ID \
--instance=INSTANCE_ID \
--ddl="CREATE PLACEMENT PLACEMENT_NAME WITH (instance_partition='PARTITION_ID', read_lease_regions = 'READ_LEASE_REGION';"
Ganti kode berikut:
DATABASE_ID: ID untuk database Spanner Anda.INSTANCE_ID: ID untuk instance Spanner Anda.PLACEMENT_NAME: nama penempatan Anda.PARTITION_ID: ID unik partisi yang akan dikaitkan dengan penempatan.- READ_LEASE_REGION dengan satu atau beberapa region tempat Anda ingin mengaktifkan sewa baca. Contoh,
europe-west1, europe-west4.
Menonaktifkan baca sewa
Penyewaan baca dinonaktifkan secara default.
Untuk memperbarui dan menonaktifkan fitur di database yang ada, tetapkan opsi
read_lease_regions dalam pernyataan DDL ALTER DATABASE
(GoogleSQL,
PostgreSQL)
ke NULL:
Konsol
Buka halaman Instances di konsol Google Cloud .
Pilih instance tempat Anda ingin menonaktifkan sewa baca.
Pilih database tempat Anda ingin menonaktifkan sewa baca.
Di menu navigasi, klik Spanner Studio.
Di halaman Spanner Studio, klik Tab baru atau gunakan tab editor yang kosong.
Masukkan pernyataan DDL
ALTER DATABASEberikut.GoogleSQL
ALTER DATABASE DATABASE_ID SET OPTIONS (read_lease_regions = NULL);Ganti DATABASE_ID dengan ID unik database Anda.
PostgreSQL
ALTER DATABASE DATABASE_ID SET "spanner.read_lease_regions" = NULL;Ganti DATABASE_ID dengan ID unik database Anda.
Klik Run.
gcloud
Untuk menetapkan opsi database read_lease_regions, gunakan
gcloud spanner databases ddl update.
GoogleSQL
gcloud spanner databases ddl update DATABASE_ID \
--instance=INSTANCE_ID \
--ddl="ALTER DATABASE DATABASE_ID SET OPTIONS (read_lease_regions = NULL);"
Ganti kode berikut:
DATABASE_ID: ID untuk database Spanner Anda.INSTANCE_ID: ID untuk instance Spanner Anda.
PostgreSQL
gcloud spanner databases ddl update DATABASE_ID \
--instance=INSTANCE_ID \
--ddl="ALTER DATABASE DATABASE_ID SET "spanner.read_lease_regions" = NULL;"
Ganti kode berikut:
DATABASE_ID: ID untuk database Spanner Anda.INSTANCE_ID: ID untuk instance Spanner Anda.
Praktik terbaik
Untuk memaksimalkan manfaat penggunaan fitur ini, gunakan sesi yang di-multiplex, yang memungkinkan Anda membuat sejumlah besar permintaan serentak dalam satu sesi.
Memantau
Setelah mengaktifkan sewa baca, Anda harus memantau latensi untuk mengonfirmasi bahwa fitur tersebut mencapai efek yang diinginkan. Untuk melakukannya, identifikasi region pemimpin dan
region dengan sewa baca yang diaktifkan dengan membuat kueri pada tabel skema informasi data_options (GoogleSQL,
PostgreSQL) atau
database Anda. Region yang mengaktifkan sewa baca mengharapkan operasi baca yang kuat memiliki latensi dalam region. Secara bersamaan, latensi penulisan meningkat dengan satu waktu perjalanan pulang pergi antara region pemimpin dan region terjauh dengan pengaktifan sewa baca.
Anda juga dapat menggunakan metrik latensi Spanner berikut untuk membantu Anda memantau latensi permintaan baca di instance Anda:
spanner.googleapis.com/api/read_request_latencies_by_serving_location
Anda dapat memfilter metrik ini menggunakan kolom /serving_location. Kolom
/serving location menunjukkan lokasi server Spanner
tempat permintaan disalurkan.
Untuk mengetahui daftar lengkap metrik yang tersedia, lihat daftar metrik untuk Spanner.
Pertimbangan biaya
Pembacaan kuat yang ditayangkan dari region dengan fitur sewa baca yang diaktifkan menggunakan sedikit lebih sedikit resource komputasi. Di sisi lain, penulisan untuk database dengan fitur masa berlaku baca yang diaktifkan menggunakan sedikit lebih banyak resource komputasi. Untuk mengetahui informasi selengkapnya, lihat Harga kapasitas komputasi Spanner.
Fitur ini tidak memengaruhi komponen harga lainnya seperti penyimpanan dan jaringan.
Langkah berikutnya
- Pelajari lebih lanjut replikasi Spanner.
- Pelajari lebih lanjut Membaca di luar transaksi.