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:
-
Melihat resource Bigtable:
- Bigtable Viewer (
roles/bigtable.viewer) - Bigtable Reader (
roles/bigtable.reader)
- Bigtable Viewer (
-
Melihat data deret waktu Monitoring:
Monitoring Viewer (
roles/monitoring.viewer)
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:
- Pembacaan: semua metode pembacaan library klien—termasuk
pembacaan satu baris seperti
readRow, pembacaan multi-baris sepertireadRowsataubulkReadRowsdengan beberapa row key, dan pemindaian rentang atau awalan baris sepertireadRowsdengan rentang atau awalan—mengirimReadRowspermintaan API Data. - Penulisan: metode penulisan library klien mengirimkan permintaan
MutateRowuntuk penulisan sederhana dan update inkremental, permintaanMutateRowsuntuk penulisan batch, permintaanCheckAndMutateRowuntuk penulisan bersyarat, atau permintaanReadModifyWriteRowuntuk penambahan dan inkrementasi.
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:
- Pembacaan titik
- Pemindaian singkat (untuk pemindaian maju) atau pemindaian singkat terbalik (jika
reversedditetapkan ketrue) - Pemindaian terbalik (untuk permintaan baca yang tersisa dengan
reversedditetapkan ketrue) - Pembacaan sparse (dievaluasi sebelum pembacaan massal sehingga Bigtable menandai pembacaan multi-kunci atau pemindaian maju yang lebih besar dengan eliminasi filter berat sebagai sparse)
- Pembacaan massal
- Pembacaan lainnya (untuk permintaan
ReadRowsyang 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 Data API: |
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 Data API: |
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
Data API: |
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
Data API: |
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 Data API: |
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 Data API: |
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 Data API: |
Setiap permintaan |
| Penulisan titik | QUERY_TYPE_POINT_WRITE |
Penulisan sederhana,
update inkremental, atau
penulisan batch kecil, seperti
Data API: |
Permintaan |
| Penulisan lainnya | QUERY_TYPE_OTHER_WRITE |
Penulisan batch besar atau penulisan sederhana besar, seperti Data API: |
Setiap permintaan |
| Baca-tulis | QUERY_TYPE_READ_WRITE |
Penulisan bersyarat atau
penambahan, seperti
Data API: |
Setiap permintaan penulisan bersyarat ( |
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_filterataublock_all_filtercolumn_range_filter,column_qualifier_regex_filter, ataufamily_name_regex_filtercells_per_column_limit_filter,cells_per_row_limit_filter, ataucells_per_row_offset_filtertimestamp_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_filtervalue_range_filterrow_key_regex_filterrow_sample_filterinterleaveconditionsinkstrip_value_transformerapply_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
Di konsol Google Cloud , buka daftar instance Bigtable.
Klik instance yang metriknya ingin Anda lihat.
Di panel navigasi, di bagian Observability, klik Access patterns.
Di daftar Cluster, pilih cluster yang pola aksesnya ingin Anda periksa. Secara default, konsol Google Cloud memilih cluster pertama dalam instance.
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
- None: opsi default yang mengelompokkan semua diagram berdasarkan pola akses,
seperti
Opsional: Untuk mengubah rentang waktu atau mengaktifkan/menonaktifkan pemuatan ulang otomatis, gunakan pemilih rentang waktu.
Melihat pola akses untuk cluster
Di konsol Google Cloud , buka daftar instance Bigtable.
Klik instance yang metriknya ingin Anda lihat.
Halaman ringkasan instance akan terbuka.
Di tabel cluster, klik ID cluster.
Di panel navigasi, klik Access patterns. Halaman ini menampilkan metrik untuk cluster yang dipilih.
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
- None: opsi default yang mengelompokkan semua diagram berdasarkan pola akses,
seperti
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 |
| Latensi | Cluster Tabel Profil aplikasi |
Latensi permintaan sisi server dari waktu ke waktu, yang dikelompokkan menurut
|
| QPS | Cluster Tabel Profil aplikasi |
Tingkat permintaan per detik dari waktu ke waktu, yang dikelompokkan menurut |
| 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, dantable - Label metrik:
query_type,app_profile, danmethod
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_READyang 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_READatauQUERY_TYPE_OTHER_READyang 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_READyang 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_SCANatauQUERY_TYPE_REVERSE_SHORT_SCANdengan 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.