Halaman ini menjelaskan cara menggunakan sewa baca Spanner. Penyewaan baca membantu database Anda mengurangi latensi baca di region non-pemimpin untuk transaksi yang memerlukan konsistensi yang kuat.
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 pemimpin. Tidak seperti komunikasi dalam satu region, jarak geografis antar-region akan menambah latensi permintaan.
Penggunaan lease baca Spanner menghilangkan kebutuhan akan round trip ini. Saat Anda menetapkan satu atau beberapa region sewa baca untuk database Anda, Spanner memberikan hak untuk menayangkan bacaan secara lokal ke satu atau beberapa region non-pemimpin, baca-tulis, atau hanya baca. Hal ini memungkinkan region non-pemimpin untuk langsung melayani pembacaan yang 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 yang kuat di instance dual-region atau multi-region.
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 sampingnya, 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 dengan workload yang sering membaca, tetapi jarang menulis.
Untuk mempelajari cara mengaktifkan lease baca di region non-pemimpin, lihat Menggunakan lease baca.
Kapan harus menggunakan sewa baca
Aktifkan sewa baca jika aplikasi dan workload Anda memenuhi kriteria berikut:
- Latensi rendah untuk pembacaan kuat lebih penting daripada latensi rendah untuk penulisan.
- Workload Anda dapat mentoleransi durasi penguncian penulisan yang lebih lama, atau memiliki persaingan penulisan yang rendah.
Mengaktifkan sewa baca akan meningkatkan latensi penulisan, yang menyebabkan kunci penulisan ditahan lebih lama. Jika workload tulis Anda sudah memiliki pertentangan tulis yang tinggi, fitur ini dapat memperburuk latensi tulis dan mengurangi throughput.
Jika ada penulisan serentak, pilihan antara menggunakan API kueri atau API baca akan memengaruhi performa database yang menggunakan region sewa baca.
Mengeksekusi pernyataan SQL di Spanner melibatkan pembacaan data dari beberapa baris atau rentang. Saat menggunakan API kueri dengan sewa baca diaktifkan, operasi baca harus menunggu operasi tulis serentak agar benar. Akibatnya, Anda mungkin mengamati latensi yang lebih tinggi, terutama saat ada lebih banyak beban tulis. API baca umumnya lebih toleran terhadap penulisan serentak daripada API kueri. Jika Anda sering menggunakan API kueri dengan beban tulis yang tinggi, pertimbangkan untuk mengurangi frekuensi penulisan atau menggunakan pembacaan basi.
Read API dioptimalkan untuk membaca baris atau rentang data tertentu. Mereka hanya perlu menunggu penulisan yang mengubah data persis yang sedang mereka coba baca. Jika Anda menggunakan API baca, hanya penulisan pada rentang data yang sama persis yang memblokir pembacaan Anda. Oleh karena itu, saat ada penulisan serentak dan Anda menggunakan region sewa baca, pembacaan kuat Spanner berperforma lebih baik dan memiliki latensi yang lebih rendah.
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 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:
- Anda tidak dapat mengaktifkan sewa baca di region saksi.
- Anda tidak dapat menggunakan lease baca dengan geo-partitioning.
- Lease baca tidak mengurangi latensi untuk pembacaan yang merupakan bagian dari transaksi baca-tulis. Meskipun transaksi baca-tulis hanya berisi pembacaan, pembacaan tersebut tetap ditayangkan dari region paling dominan.
- 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.
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 sewa baca di database PostgreSQL, lakukan salah satu perubahan konfigurasi berikut pada database Anda. Jika tidak, pembacaan 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_only
ketrue
.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.
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 Buat.
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 DATABASE
berikut.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 region tempat Anda ingin mengaktifkan lease baca. Contoh,
europe-west1
. Anda dapat mengaktifkan sewa baca untuk beberapa region. Pisahkan setiap wilayah dengan koma.
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 region tempat Anda ingin mengaktifkan lease baca. Contoh,
europe-west1
. Anda dapat mengaktifkan sewa baca untuk beberapa region. Pisahkan setiap wilayah dengan koma.
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 permanen untuk database Spanner Anda.INSTANCE_ID
: ID permanen untuk instance Spanner Anda.READ_LEASE_REGION
: region tempat Anda ingin mengaktifkan sewa baca. Contoh,europe-west1
. Anda dapat mengaktifkan sewa baca untuk beberapa region. 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 permanen untuk database Spanner Anda.INSTANCE_ID
: ID permanen untuk instance Spanner Anda.READ_LEASE_REGION
: region tempat Anda ingin mengaktifkan sewa baca. Contoh,europe-west1
. Anda dapat mengaktifkan sewa baca untuk beberapa region. 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 DATABASE
berikut.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 region tempat Anda ingin mengaktifkan lease baca. Contoh,
europe-west1
. Anda dapat mengaktifkan sewa baca untuk beberapa region. Pisahkan setiap wilayah dengan koma.
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 region tempat Anda ingin mengaktifkan lease baca. Contoh,
europe-west1
. Anda dapat mengaktifkan sewa baca untuk beberapa region. Pisahkan setiap wilayah dengan koma.
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 permanen untuk database Spanner Anda.INSTANCE_ID
: ID permanen untuk instance Spanner Anda.- READ_LEASE_REGION dengan region tempat Anda ingin mengaktifkan lease baca. Contoh,
europe-west1
. Anda dapat mengaktifkan sewa baca untuk beberapa region. Pisahkan setiap wilayah dengan koma.
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 permanen untuk database Spanner Anda.INSTANCE_ID
: ID permanen untuk instance Spanner Anda.- READ_LEASE_REGION dengan region tempat Anda ingin mengaktifkan lease baca. Contoh,
europe-west1
. Anda dapat mengaktifkan sewa baca untuk beberapa region. Pisahkan setiap wilayah dengan koma.
Menonaktifkan sewa baca
Penyewaan baca dinonaktifkan secara default.
Untuk memperbarui dan menonaktifkan fitur pada 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 DATABASE
berikut.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 permanen untuk database Spanner Anda.INSTANCE_ID
: ID permanen 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 permanen untuk database Spanner Anda.INSTANCE_ID
: ID permanen 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. Wilayah yang mengaktifkan sewa baca mengharapkan operasi baca yang kuat memiliki latensi dalam wilayah. Secara bersamaan, latensi penulisan meningkat antara region
pemimpin dan region terjauh dengan sewa baca diaktifkan.
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 sewa baca yang diaktifkan menggunakan resource komputasi yang sedikit lebih banyak. 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.