Baca perjanjian sewa

Halaman ini menjelaskan cara menggunakan sewa baca Spanner. Penyewaan baca membantu database 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 pemimpin. Tidak seperti komunikasi dalam satu region, jarak geografis antar-region menambahkan latensi tambahan pada permintaan.

Penggunaan lease baca Spanner menghilangkan kebutuhan akan round trip ini. Saat Anda menetapkan satu atau beberapa region sewa baca untuk database Anda, Spanner akan memberikan hak kepada region tersebut untuk menyajikan 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 izin baca diaktifkan, bacaan kuat dalam transaksi hanya baca akan ditayangkan secara lokal tanpa menghubungi pemimpin. Untuk transaksi baca-tulis, operasi baca masih diarahkan ke region pemimpin kecuali jika Anda menggunakan isolasi baca berulang 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 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 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 pembacaan kuat lebih penting daripada latensi rendah untuk penulisan.
  • Workload Anda dapat mentoleransi durasi penguncian tulis yang lebih lama, atau memiliki pertentangan tulis yang rendah.

Jika ada penulisan 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 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 menggunakan baca sewa dengan geo-partitioning.
  • 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.

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 ke true.

    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 intra-region dalam transaksi baca-tulis 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

  1. Buka halaman Instances di konsol Google Cloud .

    Instance

  2. Pilih instance tempat Anda ingin mengaktifkan sewa baca.

  3. Di halaman Instance overview yang terbuka, klik Create database.

  4. Untuk nama database, masukkan nama.

  5. Pilih dialek database.

  6. Klik Buat.

    Konsol Google Cloud menampilkan halaman Ringkasan untuk database yang Anda buat.

  7. Di menu navigasi, klik Spanner Studio.

  8. Di halaman Spanner Studio, klik Tab baru atau gunakan tab editor yang kosong.

  9. 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.

  10. 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

  1. Buka halaman Instances di konsol Google Cloud .

    Instance

  2. Pilih instance tempat Anda ingin mengaktifkan sewa baca.

  3. Pilih database tempat Anda ingin mengaktifkan sewa baca.

  4. Di menu navigasi, klik Spanner Studio.

  5. Di halaman Spanner Studio, klik Tab baru atau gunakan tab editor yang kosong.

  6. 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.

  7. 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

  1. Buka halaman Instances di konsol Google Cloud .

    Instance

  2. Pilih instance tempat Anda ingin menonaktifkan sewa baca.

  3. Pilih database tempat Anda ingin menonaktifkan sewa baca.

  4. Di menu navigasi, klik Spanner Studio.

  5. Di halaman Spanner Studio, klik Tab baru atau gunakan tab editor yang kosong.

  6. 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.

  7. 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 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 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