Menganalisis pola akses

Anda dapat menganalisis cara aplikasi membaca dan menulis data di Bigtable secara visual menggunakan halaman Pola akses di Google Cloud console, atau Anda dapat memanggil Cloud Monitoring API secara terprogram untuk mengkueri metrik pola akses yang mendasarinya.

Sebelum membaca dokumen ini, tinjau Pembacaan, Penulisan, dan Pemantauan.

Ringkasan

Bigtable otomatis mengklasifikasikan permintaan data yang masuk ke dalam jenis kueri di Cloud Monitoring. Pola akses workload Anda adalah perpaduan berbagai jenis kueri. Misalnya, pola akses workload Anda dapat terdiri dari jenis kueri baca titik, pemindaian singkat, dan tulis titik. Bigtable menentukan 10 jenis kueri yang berbeda.

Meskipun halaman Insight sistem menampilkan pemakaian resource secara keseluruhan, dan Key Visualizer menunjukkan cara Bigtable mendistribusikan traffic di seluruh rentang row key, halaman Pola akses menyediakan perincian workload yang berfokus pada kueri di level cluster, tabel, dan profil aplikasi. Anda dapat menggunakan halaman Pola akses untuk tugas-tugas berikut:

  • Memahami workload Anda: lihat proporsi dan rasio jenis kueri baca, tulis, dan baca-tulis untuk setiap cluster, serta kelompokkan metrik berdasarkan tabel atau profil aplikasi
  • Mendeteksi pola kueri yang tidak efisien dan memecahkan masalah latensi:
    • Mengidentifikasi pembacaan sparse saat Bigtable memindai baris atau sel secara signifikan lebih banyak daripada yang ditampilkan karena filter selektif atau sel yang tidak dikumpulkan yang menunggu pembersihan sampah memori
    • Memantau pemindaian terbalik, yang kurang efisien dibandingkan pemindaian maju
    • Bandingkan persentil latensi sisi server bersama dengan baris yang dipindai, baris yang ditampilkan, dan sel yang terlihat untuk menentukan pola akses mana yang berkontribusi pada lonjakan latensi
  • Mengidentifikasi workload untuk adopsi fitur:
    • Mengidentifikasi tabel atau profil aplikasi dengan volume pembacaan titik yang tinggi yang dapat memanfaatkan tingkat dalam memori di edisi Enterprise Plus
    • Identifikasi workload pemindaian besar atau pembacaan batch yang dapat Anda isolasi dari traffic penyaluran menggunakan komputasi serverless Data Boost

Batasan

Bigtable tidak mengklasifikasikan kueri GoogleSQL untuk Bigtable sebagai pola akses dan tidak menyertakan kueri tersebut dalam metrik pola akses baris, sel, atau byte. Dalam diagram QPS distribution, QPS, dan Latency, kueri SQL dan permintaan lain yang tidak diklasifikasikan akan muncul sebagai QUERY_TYPE_UNKNOWN.

Peran yang diperlukan

Untuk mendapatkan izin yang Anda perlukan untuk melihat halaman Access patterns di konsol Google Cloud , minta administrator untuk memberi Anda peran IAM berikut pada project:

Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.

Peran bawaan ini berisi izin yang diperlukan untuk melihat halaman Pola akses di konsol Google Cloud . Untuk melihat izin yang benar-benar diperlukan, luaskan bagian Izin yang diperlukan:

Izin yang diperlukan

Izin berikut diperlukan untuk melihat halaman Pola akses di konsol Google Cloud :

  • Lihat detail instance: bigtable.instances.get
  • Mencantumkan cluster, profil aplikasi, dan tabel: bigtable.clusters.list, bigtable.appProfiles.list, bigtable.tables.list
  • Metrik Query Monitoring: monitoring.timeSeries.list

Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.

Pola akses

Saat aplikasi Anda menggunakan library klien Bigtable, library klien akan menerjemahkan panggilan metode Anda menjadi permintaan Bigtable Data API:

Bigtable mengklasifikasikan setiap permintaan API Data yang masuk di server setelah selesai, berdasarkan faktor-faktor berikut, bukan hanya nama metode library klien:

  • Parameter permintaan: apakah permintaan menargetkan satu row key, beberapa row key, atau rentang baris, apakah permintaan menetapkan reversed, dan filter mana yang diterapkan
  • Statistik eksekusi: jumlah baris dan sel yang dipindai dan ditampilkan, serta payload byte

Misalnya, saat Anda memanggil metode baca satu baris seperti readRow, atau memanggil readRows dengan satu row key, Bigtable biasanya mengklasifikasikan permintaan sebagai pembacaan titik, yang memenuhi syarat untuk tingkat dalam memori. Namun, jika pembacaan satu baris tersebut menggunakan filter yang kompleks atau memindai sejumlah besar sel, Bigtable mungkin mengklasifikasikannya sebagai pembacaan sparse, pembacaan massal, atau pembacaan lainnya. Sebaliknya, jika Anda memanggil readRows untuk membaca beberapa row key atau memindai rentang baris, Bigtable akan mengklasifikasikan permintaan tersebut sebagai pembacaan atau pemindaian massal, yang tidak memenuhi syarat untuk paket dalam memori.

Urutan evaluasi baca

Karena satu permintaan ReadRows Data API dapat cocok dengan karakteristik lebih dari satu kategori, Bigtable mengevaluasi permintaan baca dalam urutan berikut dan menetapkan pola akses pertama yang cocok:

  1. Pembacaan titik
  2. Pemindaian singkat (untuk pemindaian maju) atau pemindaian singkat terbalik (jika reversed ditetapkan ke true)
  3. Pemindaian terbalik (untuk permintaan baca yang tersisa dengan reversed ditetapkan ke true)
  4. Pembacaan sparse (dievaluasi sebelum pembacaan massal sehingga Bigtable menandai pembacaan multi-kunci atau pemindaian maju yang lebih besar dengan eliminasi filter berat sebagai sparse)
  5. Pembacaan massal
  6. Pembacaan lainnya (untuk permintaan ReadRows yang tersisa)

Definisi jenis kueri

Tabel berikut menjelaskan setiap kategori pola akses, label query_type yang sesuai di Monitoring, operasi library klien standar, dan metode Data API yang mendasarinya (label metrik method) yang berlaku, serta cara Bigtable mengklasifikasikan permintaan ke dalam kategori tersebut. Karena nama metode bervariasi menurut bahasa pemrograman, tabel ini mencantumkan nama metode library klien yang representatif; untuk contoh kode khusus bahasa, lihat Contoh baca dan Contoh tulis. Untuk mengetahui informasi tentang filter sederhana dan kompleks, lihat bagian Filter sederhana versus filter kompleks dalam dokumen ini.

Jenis kueri Label metrik query_type Operasi klien dan metode Data API Kriteria klasifikasi
Pembacaan titik QUERY_TYPE_POINT_READ

Pembacaan satu baris, seperti readRow atau readRows satu kunci

Data API: ReadRows

Pembacaan maju dari satu row key yang tidak menggunakan filter atau filter sederhana, dengan jumlah sel yang dipindai dan ditampilkan serta ukuran respons total tetap berada dalam batas satu baris yang kecil.

Pemindaian singkat QUERY_TYPE_SHORT_SCAN

Pemindaian awalan atau rentang baris, seperti readRows dengan satu rentang atau awalan

Data API: ReadRows

Pemindaian maju dari satu rentang baris yang berdekatan yang tidak menggunakan filter atau filter sederhana, dengan jumlah baris dan sel yang dipindai dan ditampilkan serta ukuran respons total tetap berada dalam batas kecil.

Pemindaian singkat terbalik QUERY_TYPE_REVERSE_SHORT_SCAN

Pemindaian balik, seperti readRows dengan satu rentang atau awalan secara terbalik

Data API: ReadRows

Pemindaian terbalik dari satu rentang baris yang berdekatan yang tidak menggunakan filter atau filter sederhana dan tetap berada dalam batas baris, sel, dan byte yang sama dengan Pemindaian singkat.

Pemindaian balik QUERY_TYPE_REVERSE_SCAN

Pemindaian balik, seperti readRows secara terbalik

Data API: ReadRows

Setiap pembacaan terbalik yang tidak memenuhi syarat sebagai pemindaian singkat terbalik, misalnya, pemindaian terbalik yang melebihi batas baris, sel, atau byte pemindaian singkat, menentukan row key individual, memindai beberapa rentang baris, atau menggunakan filter yang kompleks.

Pembacaan sparse QUERY_TYPE_SPARSE_READ

Pembacaan yang difilter atau pemindaian di seluruh sel yang tidak dikumpulkan, menggunakan readRow atau readRows

Data API: ReadRows

Setiap permintaan baca maju (dievaluasi setelah pembacaan titik, pemindaian singkat, dan pemindaian balik) yang membuat Bigtable memindai baris atau sel secara signifikan lebih banyak daripada yang ditampilkan karena eliminasi filter atau sel yang tidak dikumpulkan yang menunggu pembersihan sampah memori.

Pembacaan massal QUERY_TYPE_BULK_READ

Pembacaan multi-baris, seperti readRows atau bulkReadRows multi-kunci, atau pembacaan satu baris yang besar menggunakan readRow

Data API: ReadRows

Pembacaan maju yang menentukan satu atau beberapa row key tanpa filter atau filter sederhana, melebihi batas pembacaan titik (misalnya, meminta beberapa row key atau membaca satu baris besar), dan tidak memenuhi syarat sebagai pembacaan sparse.

Bacaan lainnya QUERY_TYPE_OTHER_READ

Pemindaian rentang, pemindaian multi-rentang, atau pembacaan yang difilter dalam jumlah besar menggunakan readRow atau readRows

Data API: ReadRows

Setiap permintaan ReadRows yang tidak cocok dengan kategori baca sebelumnya, misalnya, pemindaian rentang maju yang besar, pemindaian multi-rentang, permintaan yang menggabungkan row key dan rentang baris, atau pembacaan dengan filter kompleks yang tidak memenuhi syarat sebagai sparse.

Penulisan titik QUERY_TYPE_POINT_WRITE

Penulisan sederhana, update inkremental, atau penulisan batch kecil, seperti mutateRow atau bulkMutateRows

Data API: MutateRow, MutateRows

Permintaan MutateRow satu baris atau permintaan batch MutateRows kecil yang mengubah sejumlah kecil baris dan sel dengan payload total byte yang kecil.

Penulisan lainnya QUERY_TYPE_OTHER_WRITE

Penulisan batch besar atau penulisan sederhana besar, seperti bulkMutateRows atau mutateRow

Data API: MutateRow, MutateRows

Setiap permintaan MutateRow atau MutateRows yang melebihi batas penulisan titik, seperti penulisan batch yang lebih besar atau penulisan dengan jumlah mutasi atau payload byte yang besar.

Baca-tulis QUERY_TYPE_READ_WRITE

Penulisan bersyarat atau penambahan, seperti checkAndMutateRow atau readModifyWriteRow

Data API: CheckAndMutateRow, ReadModifyWriteRow

Setiap permintaan penulisan bersyarat (CheckAndMutateRow) atau penambahan atau penambahan atomik (ReadModifyWriteRow), terlepas dari ukuran payload.

Dalam metrik jumlah permintaan dan latensi, Bigtable memberi label pada permintaan yang tidak diklasifikasikan, seperti kueri GoogleSQL untuk Bigtable, sebagai QUERY_TYPE_UNKNOWN.

Filter sederhana versus filter kompleks

Agar memenuhi syarat sebagai pembacaan titik, pemindaian singkat, pemindaian singkat terbalik, atau pembacaan massal, permintaan ReadRows tidak boleh menggunakan filter atau filter sederhana.

Bigtable mengklasifikasikan filter sebagai filter sederhana jika hanya menggunakan jenis filter berikut, baik sendiri maupun digabungkan dalam filter chain yang dibatasi. Untuk mengetahui informasi selengkapnya, lihat Rantai.

  • Tidak ada filter (FILTER_NOT_SET)
  • pass_all_filter atau block_all_filter
  • column_range_filter, column_qualifier_regex_filter, atau family_name_regex_filter
  • cells_per_column_limit_filter, cells_per_row_limit_filter, atau cells_per_row_offset_filter
  • timestamp_range_filter

Bigtable memperlakukan permintaan ReadRows apa pun sebagai penggunaan filter kompleks jika permintaan tersebut menggunakan jenis filter yang tidak ada dalam daftar sebelumnya, seperti berikut, atau jika permintaan tersebut merangkai sejumlah besar filter:

  • value_regex_filter
  • value_range_filter
  • row_key_regex_filter
  • row_sample_filter
  • interleave
  • condition
  • sink
  • strip_value_transformer
  • apply_label_transformer

Bigtable mengklasifikasikan permintaan tersebut sebagai pemindaian terbalik jika reversed adalah true, dan jika tidak, sebagai pembacaan sparse (jika memindai baris atau sel yang jauh lebih banyak daripada yang ditampilkan) atau pembacaan lainnya.

Melihat pola akses

Anda dapat melihat halaman Access patterns di konsol Google Cloud di tingkat instance atau tingkat cluster.

Melihat pola akses untuk instance

  1. Di konsol Google Cloud , buka daftar instance Bigtable.

    Buka daftar instance

  2. Klik instance yang metriknya ingin Anda lihat.

  3. Di panel navigasi, di bagian Observability, klik Access patterns.

  4. Di daftar Cluster, pilih cluster yang pola aksesnya ingin Anda periksa. Secara default, konsol Google Cloud memilih cluster pertama dalam instance.

  5. Dalam daftar Kelompokkan menurut, pilih cara mengelompokkan diagram:

    • None: opsi default yang mengelompokkan semua diagram berdasarkan pola akses, seperti QUERY_TYPE_POINT_READ
    • Profil aplikasi: mengelompokkan semua diagram berdasarkan ID profil aplikasi dan pola akses
    • Tabel: menguraikan semua diagram berdasarkan ID tabel dan pola akses
  6. Opsional: Untuk mengubah rentang waktu atau mengaktifkan/menonaktifkan pemuatan ulang otomatis, gunakan pemilih rentang waktu.

Melihat pola akses untuk cluster

  1. Di konsol Google Cloud , buka daftar instance Bigtable.

    Buka daftar instance

  2. Klik instance yang metriknya ingin Anda lihat.

    Halaman ringkasan instance akan terbuka.

  3. Di tabel cluster, klik ID cluster.

  4. Di panel navigasi, klik Access patterns. Halaman ini menampilkan metrik untuk cluster yang dipilih.

  5. Dalam daftar Kelompokkan menurut, pilih cara mengelompokkan diagram:

    • None: opsi default yang mengelompokkan semua diagram berdasarkan pola akses, seperti QUERY_TYPE_POINT_READ
    • Profil aplikasi: mengelompokkan semua diagram berdasarkan ID profil aplikasi dan pola akses
    • Tabel: menguraikan semua diagram berdasarkan ID tabel dan pola akses
  6. Opsional: Untuk mengubah rentang waktu atau mengaktifkan/menonaktifkan pemuatan ulang otomatis, gunakan pemilih rentang waktu.

Diagram dan metrik di halaman pola akses

Halaman Access patterns menyediakan diagram untuk metrik berikut:

Metrik Tersedia untuk Deskripsi
Distribusi QPS Cluster
Tabel
Profil aplikasi

Proporsi dan rasio rata-rata permintaan per detik (QPS) yang digabungkan di seluruh rentang waktu yang dipilih untuk cluster, yang dikelompokkan menurut query_type dan opsi Kelompokkan menurut yang dipilih.

Latensi Cluster
Tabel
Profil aplikasi

Latensi permintaan sisi server dari waktu ke waktu, yang dikelompokkan menurut query_type dan opsi Kelompokkan menurut yang dipilih. Gunakan menu persentil pada diagram untuk beralih antara persentil ke-99 (default), persentil ke-95, dan persentil ke-50.

QPS Cluster
Tabel
Profil aplikasi

Tingkat permintaan per detik dari waktu ke waktu, yang dikelompokkan menurut query_type dan opsi Kelompokkan menurut yang dipilih.

Baris yang ditampilkan Cluster
Tabel
Profil aplikasi

Jumlah baris yang ditampilkan Bigtable ke klien per detik untuk permintaan baca dan baca-tulis setelah menerapkan filter.

Baris yang dipindai Cluster
Tabel
Profil aplikasi

Jumlah baris yang dibaca Bigtable per detik saat memproses permintaan baca dan baca-tulis, sebelum menerapkan filter. Membandingkan Baris yang dipindai dengan Baris yang ditampilkan akan membantu Anda mengidentifikasi filter baca yang tidak efisien.

Baris yang diubah Cluster
Tabel
Profil aplikasi

Jumlah baris yang diubah per detik oleh permintaan tulis dan baca-tulis.

Sel yang terlihat Cluster
Tabel
Profil aplikasi

Jumlah sel yang diperiksa Bigtable per detik selama permintaan baca dan baca-tulis sebelum menerapkan filter, termasuk sel yang difilter atau yang menunggu pembersihan sampah memori.

Sel terkirim Cluster
Tabel
Profil aplikasi

Jumlah sel yang ditampilkan Bigtable ke klien per detik setelah menerapkan filter. Membandingkan Sel yang terlihat dengan Sel yang dikirim akan membantu Anda mengidentifikasi permintaan baca yang memeriksa banyak sel untuk setiap sel yang ditampilkan.

Byte yang dikirim Cluster
Tabel
Profil aplikasi

Jumlah byte data baris yang dienkode yang ditampilkan per detik.

Anda juga dapat mengkueri metrik ini secara terprogram menggunakan Cloud Monitoring API, melihatnya di Metrics Explorer, atau menambahkannya ke dasbor kustom. Setiap metrik bigtable.googleapis.com/query_type/* pada resource yang dimonitor bigtable_table menyertakan label berikut:

  • Label resource: project_id, instance, cluster, dan table
  • Label metrik: query_type, app_profile, dan method

Untuk mengetahui informasi selengkapnya tentang cara membuat kueri metrik Bigtable di Monitoring, lihat Memantau dengan Monitoring dan Metrik.

Mengoptimalkan workload berdasarkan pola akses

Anda dapat menggunakan metrik di halaman Pola akses untuk membuat keputusan berikut:

  • Aktifkan tingkat dalam memori untuk pembacaan titik latensi rendah: jika diagram Distribusi QPS, QPS, dan Latensi menunjukkan volume permintaan QUERY_TYPE_POINT_READ yang tinggi pada tabel atau profil aplikasi dengan target latensi baca yang ketat, pertimbangkan untuk mengaktifkan tingkat dalam memori yang tersedia di edisi Enterprise Plus. Kelompokkan diagram menurut Table atau App profile untuk mengidentifikasi tabel dan workload yang akan mendapatkan manfaat paling besar.
  • Mengisolasi pemindaian besar dan pembacaan batch dengan Data Boost: jika Anda mengamati volume tinggi atau lonjakan berkala permintaan QUERY_TYPE_BULK_READ atau QUERY_TYPE_OTHER_READ yang berbagi cluster dengan traffic penayangan yang sensitif terhadap latensi, kelompokkan menurut Profil aplikasi untuk mengidentifikasi sumber pemindaian. Rutekan pembacaan batch, pelaporan, atau analisis melalui profil aplikasi khusus yang dikonfigurasi untuk menggunakan komputasi serverless Data Boost agar pemindaian besar tidak bersaing dengan node penyaluran untuk mendapatkan resource CPU.
  • Kurangi overhead filter dan sesuaikan pembersihan sampah memori: jika Anda melihat tingkat permintaan QUERY_TYPE_SPARSE_READ yang tinggi, jika Scanned rows jauh lebih tinggi daripada Returned rows, atau jika Cells seen jauh lebih tinggi daripada Sent cells, permintaan baca Anda memindai data yang tidak ditampilkan Bigtable ke klien. Untuk meningkatkan efisiensi pembacaan, lakukan hal berikut:
    • Persempit rentang atau awalan row key Anda dalam permintaan baca, daripada mengandalkan filter nilai atau ekspresi reguler untuk menghapus baris.
    • Sertakan filter batas sel, seperti cells_per_column_limit_filter, saat aplikasi Anda hanya memerlukan versi sel terbaru. Untuk mengetahui informasi selengkapnya, lihat Batas sel per kolom.
    • Tinjau kebijakan pembersihan sampah memori Anda agar versi sel yang sudah tidak berlaku atau usang tidak menumpuk dan memperlambat pemindaian. Untuk mengetahui informasi selengkapnya, lihat Ringkasan pembersihan sampah memori.
  • Ganti pemindaian terbalik dengan pemindaian maju: jika Anda sering mengamati permintaan QUERY_TYPE_REVERSE_SCAN atau QUERY_TYPE_REVERSE_SHORT_SCAN dengan latensi yang meningkat, pertimbangkan untuk mendesain row key Anda agar aplikasi Anda dapat mengeluarkan pemindaian maju. Untuk mengetahui informasi selengkapnya, lihat Praktik terbaik desain skema.

Langkah berikutnya