Spanner menyediakan tabel bawaan yang mencatat statistik operasi baca (atau kueri), tulis, dan hapus untuk tabel (termasuk tabel aliran perubahan) dan indeks Anda. Dengan statistik operasi tabel, Anda dapat melakukan hal berikut:
Identifikasi tabel dengan peningkatan traffic tulis yang sesuai dengan peningkatan penyimpanan.
Identifikasi tabel dengan traffic baca, tulis, dan hapus yang tidak terduga.
Identifikasi tabel yang banyak digunakan.
Saat Anda membuat kueri atau menulis ke tabel, jumlah operasi yang sesuai untuk tabel akan bertambah 1, terlepas dari jumlah baris yang diakses.
Metrik operasi per detik secara keseluruhan dari database dapat dipantau dengan
Operations per second
, Operations per second by API method
, dan metrik terkait
lainnya dalam diagram Insight Sistem.
Ketersediaan
Spanner menyediakan statistik operasi tabel dalam skema SPANNER_SYS
. Data SPANNER_SYS
hanya tersedia melalui antarmuka
SQL. Contoh:
Halaman Spanner Studio database di konsol Google Cloud
Perintah
gcloud spanner databases execute-sql
executeQuery
API
Metode baca tunggal lainnya yang disediakan Spanner tidak mendukung
SPANNER_SYS
.
Statistik operasi tabel
Tabel berikut melacak statistik baca (atau kueri), tulis, dan hapus pada tabel dan indeks Anda selama jangka waktu tertentu:
SPANNER_SYS.TABLE_OPERATIONS_STATS_MINUTE
: Operasi selama interval 1 menitSPANNER_SYS.TABLE_OPERATIONS_STATS_10MINUTE
: Operasi selama interval 10 menitSPANNER_SYS.TABLE_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 didasarkan pada waktu jam. Interval 1 menit dimulai pada menit, interval 10 menit dimulai setiap 10 menit mulai dari jam, dan interval 1 jam dimulai pada jam.
Misalnya, pada pukul 11.59.30, interval terbaru yang tersedia untuk kueri SQL adalah:
- 1 menit: 00.58.00–00.58.59
- 10 menit: 11.40.00–11.49.59
- 1 jam: 10.00.00–10.59.59
Skema untuk semua tabel statistik operasi tabel
Nama kolom | Jenis | Deskripsi |
---|---|---|
INTERVAL_END |
TIMESTAMP |
Akhir interval waktu saat ukuran tabel dikumpulkan. |
TABLE_NAME |
STRING |
Nama tabel atau indeks. |
READ_QUERY_COUNT |
INT64 |
Jumlah kueri atau operasi baca dari tabel. |
WRITE_COUNT |
INT64 |
Jumlah kueri yang menulis ke tabel. |
DELETE_COUNT |
INT64 |
Jumlah kueri yang melakukan penghapusan pada tabel. |
Jika Anda menyisipkan data ke dalam database menggunakan mutasi, write_count
akan meningkat sebesar 1 untuk setiap tabel yang diakses oleh pernyataan penyisipan. Selain itu,
kueri yang mengakses indeks, tanpa memindai tabel yang mendasarinya, hanya
akan menambah read_query_count
pada indeks.
Retensi data
Setidaknya, Spanner menyimpan data untuk setiap tabel selama periode waktu berikut:
SPANNER_SYS.TABLE_OPERATIONS_STATS_MINUTE
: Interval yang mencakup 6 jam sebelumnya.SPANNER_SYS.TABLE_OPERATIONS_STATS_10MINUTE
: Interval yang mencakup 4 hari sebelumnya.SPANNER_SYS.TABLE_OPERATIONS_STATS_HOUR
: Interval yang mencakup 30 hari sebelumnya.
Contoh kueri
Bagian ini mencakup beberapa contoh pernyataan SQL yang mengambil statistik operasi tabel agregat. Anda dapat menjalankan pernyataan SQL ini menggunakan library klien, atau gcloud spanner.
Membuat kueri tabel dan indeks dengan operasi tulis terbanyak untuk interval terbaru
SELECT interval_end, table_name, write_count FROM spanner_sys.table_operations_stats_minute WHERE interval_end = ( SELECT MAX(interval_end) FROM spanner_sys.table_operations_stats_minute) ORDER BY write_count DESC;
Membuat kueri tabel dan indeks dengan operasi penghapusan terbanyak untuk interval terbaru
SELECT interval_end, table_name, delete_count FROM spanner_sys.table_operations_stats_minute WHERE interval_end = ( SELECT MAX(interval_end) FROM spanner_sys.table_operations_stats_minute) ORDER BY delete_count DESC;
Membuat kueri tabel dan indeks dengan operasi kueri dan operasi baca terbanyak untuk interval terbaru
SELECT interval_end, table_name, read_query_count FROM spanner_sys.table_operations_stats_minute WHERE interval_end = ( SELECT MAX(interval_end) FROM spanner_sys.table_operations_stats_minute) ORDER BY read_query_count DESC;
Membuat kueri penggunaan tabel selama 6 jam terakhir
SELECT interval_end, read_query_count, write_count, delete_count FROM spanner_sys.table_operations_stats_minute WHERE table_name = table_name ORDER BY interval_end DESC;
Dengan keterangan:
table_name
harus berupa tabel atau indeks yang ada dalam database.
Membuat kueri penggunaan tabel selama 14 hari terakhir
GoogleSQL
SELECT interval_end, read_query_count, write_count, delete_count FROM spanner_sys.table_operations_stats_hour WHERE interval_end > TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL -14 DAY) AND table_name = table_name ORDER BY interval_end DESC;
Dengan keterangan:
table_name
harus berupa tabel atau indeks yang ada dalam database.
Membuat kueri tabel dan indeks tanpa penggunaan dalam 24 jam terakhir
GoogleSQL
(SELECT t.table_name FROM information_schema.tables AS t WHERE t.table_catalog = "" AND t.table_schema = "" AND t.table_type = "BASE TABLE" UNION ALL SELECT cs.change_stream_name FROM information_schema.change_streams cs WHERE cs.change_stream_catalog = "" AND cs.change_stream_schema = "" UNION ALL SELECT idx.index_name FROM information_schema.indexes idx WHERE idx.index_type = "INDEX" AND idx.table_catalog = "" AND idx.table_schema = "") EXCEPT ALL (SELECT DISTINCT(table_name) FROM spanner_sys.table_operations_stats_hour WHERE interval_end > TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL -24 HOUR));
Langkah selanjutnya
Gunakan Statistik ukuran tabel untuk menentukan ukuran tabel dan indeks Anda.
Pelajari Alat introspeksi lainnya.
Pelajari lebih lanjut praktik terbaik SQL untuk Spanner.