Mengidentifikasi transaksi yang mungkin menyebabkan latensi tinggi

Halaman ini menjelaskan cara menggunakan Lock insights dan Transaction insights untuk mengidentifikasi transaksi yang menyebabkan latensi tinggi.

Ringkasan

Untuk memastikan konsistensi beberapa transaksi serentak, Spanner menggunakan kunci untuk mengontrol akses ke data. Persaingan kunci terjadi saat banyak transaksi memerlukan akses yang sering ke kunci yang sama, sehingga menyebabkan latensi yang tinggi. Tanpa antarmuka visual, mengidentifikasi transaksi bermasalah yang menyebabkan tingginya jumlah masalah pertentangan kunci bisa menjadi sulit.

Operasi Spanner memperoleh kunci saat operasi menjadi bagian dari transaksi baca-tulis. Transaksi hanya baca tidak memperoleh kunci.

Spanner membantu Anda mengidentifikasi transaksi yang menyebabkan latensi tinggi dengan memandu Anda melalui langkah-langkah berikut:

  1. Periksa lonjakan latensi menggunakan Spanner Monitoring.
  2. Periksa masalah pertentangan kunci menggunakan Insight kunci.
  3. Identifikasi transaksi bermasalah menggunakan Insight transaksi.

Harga

Tidak ada biaya tambahan untuk Insight kunci atau Insight transaksi.

Konfigurasi wilayah

Insight lock dan Insight transaksi tersedia dalam konfigurasi regional dan multi-region.

Retensi data

Retensi data maksimum untuk data yang ditampilkan di dasbor Lock insights dan Transaction insights adalah 30 hari. Untuk grafik, data diambil dari tabel SPANNER_SYS.*, yang memiliki periode retensi maksimum 30 hari.

Untuk mengetahui informasi selengkapnya tentang tabel dan retensi data ini, lihat Statistik penguncian dan Statistik transaksi.

Peran yang diperlukan

Anda memerlukan peran dan izin IAM yang berbeda, bergantung pada apakah Anda adalah pengguna IAM atau pengguna kontrol akses terperinci.

Pengguna Identity and Access Management (IAM)

Untuk mendapatkan izin yang Anda perlukan guna melihat halaman insight Kunci dan Transaksi, minta administrator untuk memberi Anda peran IAM berikut pada instance:

Izin berikut dalam peran Cloud Spanner Database Reader (roles/spanner.databaseReader) diperlukan untuk melihat halaman insight Lock dan Transaction:

  • spanner.databases.beginReadOnlyTransaction
  • spanner.databases.select
  • spanner.sessions.create

Pengguna kontrol akses yang sangat terperinci

Jika Anda adalah pengguna kontrol akses terperinci, pastikan Anda:

  • Memiliki peran Cloud Spanner Viewer(roles/spanner.viewer)
    • Hanya memiliki hak istimewa kontrol akses terperinci dan diberi peran sistem spanner_sys_reader atau salah satu peran anggotanya.
  • Pilih spanner_sys_reader atau peran anggota sebagai peran sistem Anda saat ini di halaman ringkasan database.

Untuk mengetahui informasi selengkapnya, lihat Tentang kontrol akses terperinci dan Peran sistem kontrol akses terperinci.

Periksa lonjakan latensi menggunakan Pemantauan Spanner

Anda dapat menggunakan Cloud Monitoring untuk menyetel pemberitahuan untuk metrik yang melebihi batas yang ditentukan untuk semua permintaan.

Jika Anda mendapatkan pemberitahuan yang menunjukkan lonjakan latensi untuk sebuah instance, Anda dapat mengonfirmasinya di dasbor Monitoring Spanner, yang menampilkan diagram untuk berbagai metrik penting. Diagram Latensi membantu Anda melihat latensi tinggi pada persentil ke-50 dan ke-99.

Untuk mengonfirmasi lonjakan latensi penulisan pada persentil ke-99, ikuti langkah-langkah berikut:

  1. Di konsol Google Cloud , buka halaman Spanner Instances.

    Buka instance Spanner

  2. Klik nama instance.

    Konsol Google Cloud menampilkan ringkasan instance.

  3. Klik Monitoring di menu navigasi.

    Konsol Google Cloud menampilkan diagram data untuk instance.

  4. Pada diagram Latensi, tetapkan Fungsi ke Write dan Persentil ke 99th.

  5. Periksa diagram yang dimuat ulang untuk melihat apakah ada lonjakan.

Grafik yang menunjukkan latensi tulis pada persentil ke-99

Jika Anda mengamati bahwa penggunaan CPU tidak melonjak dan error melonjak dalam operasi per detik, kemungkinan lonjakan latensi disebabkan oleh pertentangan penguncian.

Memeriksa masalah pertentangan kunci menggunakan Insight kunci

Dasbor insight Kunci membantu Anda melihat waktu tunggu kunci dalam instance atau database yang dipilih. Hal ini dapat membantu Anda mengonfirmasi apakah latensi tinggi disebabkan oleh pertentangan kunci.

Memeriksa waktu tunggu kunci yang tinggi

Untuk memeriksa waktu tunggu kunci yang tinggi, ikuti langkah-langkah berikut:

  1. Klik Lock insights di menu navigasi.

    Konsol Google Cloud menampilkan diagram Total lock wait, yang menampilkan waktu tunggu kunci untuk setiap database dalam instance, dalam detik tunggu kunci per menit.

    Data yang ditampilkan adalah untuk 1 hour secara default, seperti yang ditunjukkan oleh pemilih waktu di pojok kanan atas dasbor Insight kunci. Untuk melihat data untuk rentang yang lebih luas, pilih opsi lain, seperti 1 day.

    Untuk mengetahui informasi selengkapnya, lihat Menangani diagram.

  2. Dari pemilih Database di bagian atas, pilih database yang menunjukkan waktu tunggu kunci tertinggi.

    Diagram Total waktu tunggu kunci diperbarui untuk menampilkan data hanya untuk database yang dipilih.

    Selain itu, diagram lain, Waktu tunggu kunci per rentang baris, menampilkan grafik untuk waktu tunggu kunci menurut rentang baris.

  3. Klik grafik dan tarik secara horizontal untuk meluaskan jam saat lonjakan latensi terlihat.

Dasbor insight Kunci

Menganalisis data tunggu kunci

Tabel Insight Penguncian menampilkan kolom berikut dari tabel sistem SPANNER_SYS.LOCK_STATS:

  • Row range start key: Row key tempat konflik penguncian terjadi. Jika konflik melibatkan rentang baris, nilai tersebut mewakili kunci awal rentang. Tanda plus (+) menandakan rentang.
  • Waktu tunggu kunci: Total waktu tunggu kunci yang ditampilkan secara visual pada batang horizontal. Secara default, tabel menggunakan kolom ini untuk pengurutan dan menampilkan kunci awal rentang baris dengan waktu tunggu kunci tertinggi di bagian atas.
  • Waktu tunggu kunci (detik): Waktu tunggu kunci kumulatif konflik kunci yang dicatat untuk semua kolom dalam rentang row key, dalam detik.
  • Lock wait (%): Waktu tunggu konflik kunci yang dicatat untuk semua kolom dalam rentang row key sebagai persentase dari total waktu tunggu kunci untuk semua rentang row key dalam database.

Untuk mengorelasikan data pada diagram Rentang waktu tunggu kunci per baris dengan data dalam tabel, pilih garis. Baris terkait akan muncul ditandai. Sebaliknya, centang kotak untuk baris dalam tabel guna melihat garis terkait pada diagram.

Tabel insight Kunci

Untuk memfilter data dalam tabel, lakukan tindakan berikut:

  1. Klik kolom di samping Filter.

  2. Pilih properti, pilih operator, dan tentukan nilai.

Tabel akan menampilkan data yang cocok dengan filter.

Melihat contoh permintaan kunci

Panel Contoh permintaan penguncian menampilkan detail tentang contoh permintaan penguncian dari transaksi yang bersaing.

Untuk melihat informasi permintaan penguncian sampel untuk kunci awal rentang baris, klik link terkait di tabel.

Tabel ini menampilkan kolom informasi berikut:

  • Contoh nama kolom: Kolom yang mengalami konflik penguncian pada rentang row key.
  • Mode kunci: Lock mode yang diminta.
  • Lihat transaksi: Link ke halaman Insight transaksi, yang menunjukkan transaksi yang mungkin bersaing untuk mendapatkan kunci.

Halaman detail Insight kunci

Mengidentifikasi transaksi yang bersaing menggunakan Insight transaksi

Dasbor Insight transaksi membantu Anda melihat latensi dalam transaksi di instance atau database yang dipilih. Hal ini dapat membantu Anda mengidentifikasi transaksi yang mungkin menyebabkan latensi tinggi karena perselisihan kunci.

Melihat latensi transaksi

Untuk melihat latensi transaksi, ikuti langkah-langkah berikut:

  1. Klik Insight transaksi di navigasi kiri.

  2. Dari pemilih Database di bagian atas, pilih database yang menunjukkan waktu tunggu kunci tertinggi.

    Atau, di dasbor Insight kunci, klik Lihat transaksi untuk memfilter transaksi yang membaca atau menulis ke kolom sampel tertentu.

    Data yang ditampilkan adalah untuk 1 hour secara default, seperti yang ditunjukkan oleh pemilih waktu di sudut kanan atas dasbor Insight transaksi.

Dasbor akan menampilkan diagram berikut:

  • Diagram Latensi rata-rata (semua transaksi) menampilkan latensi untuk semua transaksi dalam instance.

  • Diagram Latensi rata-rata (per transaksi) menampilkan latensi untuk setiap transaksi pada database yang dipilih.

Dasbor Insight transaksi

Menganalisis data transaksi

Anda dapat melihat dan menganalisis data untuk setiap transaksi dalam tabel di bawah diagram. Tabel ini menampilkan data metrik dari tabel sistem SPANNER_SYS.TXN_STATS dalam kolom berikut:

  • Sidik Jari: Hash tag transaksi, jika ada. Jika tidak, hash dihitung berdasarkan operasi yang terlibat dalam transaksi. Nilainya adalah link yang mengarah ke halaman Detail Transaksi.
  • Tag transaksi: Tag transaksi opsional untuk transaksi. Data statistik untuk beberapa transaksi yang memiliki string tag yang sama dikelompokkan dalam satu baris dengan label TRANSACTION_TAG yang cocok dengan string tag.
  • Tabel yang terpengaruh: Tabel yang terpengaruh oleh transaksi.
  • Table.column Read: Kolom yang dibaca transaksi.
  • Table.column Ditulis: Kolom yang ditulisi transaksi.
  • Latensi rata-rata (detik): Rata-rata detik yang diperlukan untuk melakukan transaksi. Secara default, tabel diurutkan berdasarkan kolom ini dalam urutan menurun.

Untuk mengorelasikan data pada diagram Latensi rata-rata (per transaksi) dengan data dalam tabel, pilih garis pada diagram. Baris yang sesuai dalam tabel akan muncul ditandai.

Untuk memfilter data dalam tabel, lakukan tindakan berikut:

  1. Klik di samping Filter.

  2. Pilih properti, pilih operator, dan tentukan nilai.

Tabel akan menampilkan data yang cocok dengan filter.

Tabel Insight transaksi

Melihat informasi mendetail tentang transaksi

Untuk melihat informasi mendetail tentang transaksi, seperti yang menunjukkan latensi tertinggi, klik link Sidik Jari di baris yang sesuai dalam tabel.

Halaman Detail transaksi akan muncul. Selain tabel detail di bagian atas, tabel ini menampilkan informasi berikut:

  • Batang yang menampilkan nilai numerik untuk setiap metrik ini:

    • Byte rata-rata: Tingkat rata-rata byte yang ditulis oleh transaksi, dalam byte per menit.
    • Latensi rata-rata: Rata-rata detik yang diperlukan dari operasi pertama transaksi hingga melakukan commit atau membatalkan.
    • Latensi commit rata-rata: Detik rata-rata yang diperlukan untuk melakukan operasi commit.
    • Total attempt count: Rasio rata-rata upaya transaksi, dalam upaya per menit. Untuk mengetahui informasi selengkapnya tentang interval, lihat Statistik transaksi.
    • Total jumlah pembatalan: Rata-rata tingkat percobaan transaksi yang dibatalkan, dalam pembatalan per menit, termasuk percobaan yang dibatalkan sebelum memanggil metode commit transaksi. Untuk mengetahui informasi selengkapnya tentang interval, lihat Statistik transaksi.
  • Diagram yang menggambarkan nilai-nilai ini. Diagram Total upaya dan pembatalan menampilkan rasio upaya transaksi per menit (dalam upaya per menit) dan pembatalan (dalam pembatalan per menit). Untuk menampilkan upaya dan pembatalan transaksi per menit, konsol Google Cloud mengkueri tabel SPANNER_SYS.TXN_STATS_TOP_* yang paling mencakup rentang waktu yang Anda pilih (_MINUTE, _10MINUTE, atau _HOUR). Konsol Google Cloud kemudian membagi nilai di kolom ATTEMPT_COUNT dan kolom COMMIT_ABORT_COUNT dari tabel yang dipilih dengan durasi interval dalam menit (1, 10, atau 60) untuk menampilkan tarif per menit. Untuk mengetahui informasi selengkapnya tentang interval, lihat Statistik transaksi.

    Selain itu, diagram Peserta rata-rata menunjukkan jumlah rata-rata peserta dalam setiap upaya penerapan.

Halaman Detail insight transaksi

Selidiki apakah bentuk transaksi dapat dioptimalkan untuk mengurangi latensi. Pertimbangkan untuk menerapkan praktik yang direkomendasikan untuk mengurangi persaingan kunci.

Langkah Berikutnya