Spanner menyediakan tabel bawaan yang mencatat statistik operasi baca, kueri, dan tulis untuk kolom tabel Anda. Dengan statistik operasi kolom, Anda dapat melakukan hal berikut:
Identifikasi kolom dengan traffic baca, kueri, dan tulis yang tidak terduga.
Identifikasi kolom yang sering digunakan.
Saat Anda membuat kueri atau menulis ke kolom, Spanner akan menaikkan jumlah operasi yang sesuai untuk kolom tersebut sebanyak satu, terlepas dari jumlah baris yang diakses.
Anda dapat memantau keseluruhan database menggunakan metrik yang mengukur operasi per detik, operasi per detik menurut metode API, dan metrik terkait lainnya dalam diagram System Insights.
Mengakses statistik operasi kolom
Spanner menyediakan statistik operasi kolom dalam skema SPANNER_SYS
. Anda dapat menggunakan cara berikut untuk mengakses data SPANNER_SYS
:
Halaman Spanner Studio database di konsol Google Cloud
Perintah
gcloud spanner databases execute-sql
Metode
executeSql
atauexecuteStreamingSql
.
Metode baca tunggal berikut yang disediakan Spanner
tidak mendukung SPANNER_SYS
:
- Melakukan pembacaan yang kuat dari satu baris atau beberapa baris dalam tabel.
- Melakukan pembacaan basi dari satu baris atau beberapa baris dalam tabel.
- Membaca dari satu baris atau beberapa baris dalam indeks sekunder.
Untuk mengetahui informasi selengkapnya, lihat Metode bacaan tunggal.
Statistik operasi kolom
Tabel berikut melacak statistik baca, kueri, dan tulis pada kolom Anda selama jangka waktu tertentu:
SPANNER_SYS.COLUMN_OPERATIONS_STATS_MINUTE
: Operasi selama interval 1 menitSPANNER_SYS.COLUMN_OPERATIONS_STATS_10MINUTE
: Operasi selama interval 10 menitSPANNER_SYS.COLUMN_OPERATIONS_STATS_HOUR
: Operasi selama interval 1 jam
Tabel ini memiliki properti berikut:
Setiap tabel berisi data untuk interval waktu yang tidak tumpang-tindih dengan panjang yang ditentukan oleh nama tabel.
Interval 1 menit dimulai pada menit ke-0, interval 10 menit dimulai setiap 10 menit, dimulai pada jam ke-0, dan interval 1 jam dimulai pada jam ke-0.
Misalnya, pada pukul 11.59.30, kueri SQL dapat mengakses interval terbaru berikut:
- 1 menit: 11.58.00–11.58.59 AM
- 10 menit: 11.40.00–11.49.59 AM
- 1 jam: 10.00.00–10.59.59
Skema untuk semua tabel statistik operasi kolom
Nama kolom | Jenis | Deskripsi |
---|---|---|
INTERVAL_END |
TIMESTAMP |
Akhir interval waktu saat statistik penggunaan kolom dikumpulkan. |
TABLE_NAME |
STRING |
Nama tabel atau indeks. |
COLUMN_NAME |
STRING |
Nama kolom. |
READ_COUNT |
INT64 |
Jumlah pembacaan dari kolom. |
QUERY_COUNT |
INT64 |
Jumlah kueri yang membaca dari kolom. |
WRITE_COUNT |
INT64 |
Jumlah kueri yang menulis ke tabel. |
IS_QUERY_CACHE_MEMORY_CAPPED |
BOOL |
Apakah pengumpulan statistik dibatasi karena tekanan memori. |
Jika Anda memasukkan data ke database menggunakan mutasi, Spanner akan menaikkan WRITE_COUNT
sebesar 1 untuk setiap tabel yang diakses oleh pernyataan penyisipan. Selain itu, kueri yang mengakses indeks tanpa memindai tabel pokok hanya akan menaikkan QUERY_COUNT
pada indeks.
Retensi data
Setidaknya, Spanner menyimpan data untuk setiap tabel selama periode waktu berikut:
SPANNER_SYS.COLUMN_OPERATIONS_STATS_MINUTE
: Interval yang mencakup enam jam sebelumnya.SPANNER_SYS.COLUMN_OPERATIONS_STATS_10MINUTE
: Interval yang mencakup empat hari sebelumnya.SPANNER_SYS.COLUMN_OPERATIONS_STATS_HOUR
: Interval yang mencakup 30 hari sebelumnya.
Contoh kueri
Bagian ini mencakup beberapa contoh pernyataan SQL yang mengambil statistik operasi kolom gabungan. Anda dapat menjalankan pernyataan SQL ini menggunakan library klien atau Google Cloud CLI.
Membuat kueri kolom tabel dengan operasi tulis terbanyak untuk interval terbaru
GoogleSQL
SELECT interval_end, table_name, column_name, write_count FROM spanner_sys.column_operations_stats_minute WHERE interval_end = ( SELECT MAX(interval_end) FROM spanner_sys.column_operations_stats_minute) ORDER BY write_count DESC;
PostgreSQL
SELECT interval_end, table_name, column_name, write_count FROM spanner_sys.column_operations_stats_minute WHERE interval_end = ( SELECT MAX(interval_end) FROM spanner_sys.column_operations_stats_minute) ORDER BY write_count DESC;
Membuat kueri kolom dengan operasi kueri terbanyak untuk interval terbaru
GoogleSQL
SELECT interval_end, table_name, column_name, query_count FROM spanner_sys.column_operations_stats_minute WHERE interval_end = ( SELECT MAX(interval_end) FROM spanner_sys.column_operations_stats_minute) ORDER BY query_count DESC;
PostgreSQL
SELECT interval_end, table_name, column_name, query_count FROM spanner_sys.column_operations_stats_minute WHERE interval_end = ( SELECT MAX(interval_end) FROM spanner_sys.column_operations_stats_minute) ORDER BY query_count DESC;
Mengirim kueri penggunaan kolom selama 6 jam terakhir
GoogleSQL
SELECT interval_end, read_count, query_count, write_count FROM spanner_sys.column_operations_stats_minute WHERE table_name = "table_name" AND column_name = "column_name" ORDER BY interval_end DESC;
Dengan:
table_name
harus berupa tabel atau indeks yang ada dalam database.column_name
harus berupa kolom yang ada di tabel.
PostgreSQL
SELECT interval_end, read_count, query_count, write_count FROM spanner_sys.column_operations_stats_minute WHERE table_name = 'table_name' AND column_name = 'column_name' ORDER BY interval_end DESC;
Dengan:
table_name
harus berupa tabel atau indeks yang ada dalam database.column_name
harus berupa kolom yang ada di tabel.
Mengirim kueri penggunaan kolom selama 14 hari terakhir
GoogleSQL
SELECT interval_end, read_count, query_count, write_count FROM spanner_sys.column_operations_stats_hour WHERE interval_end > TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL -14 DAY) AND table_name = "table_name" AND column_name = "column_name" ORDER BY interval_end DESC;
Lakukan penggantian berikut:
table_name
: nama tabel atau indeks dalam database.column_name
: nama kolom dalam tabel.
PostgreSQL
SELECT interval_end, read_count, query_count, write_count FROM spanner_sys.column_operations_stats_hour WHERE interval_end > spanner.timestamptz_subtract(now(), '14 DAY') AND table_name = 'table_name' AND column_name = 'column_name' ORDER BY interval_end DESC;
Lakukan penggantian berikut:
table_name
: nama tabel atau indeks dalam database.column_name
: nama kolom dalam tabel.
Langkah berikutnya
Pelajari Tabel statistik bawaan lainnya.
Pelajari lebih lanjut praktik terbaik SQL untuk Spanner.