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 sering 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 System Insights.
Mengakses statistik operasi tabel
Spanner menyediakan statistik operasi tabel 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.
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 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, interval terbaru yang tersedia untuk kueri SQL adalah:
- 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 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 pembacaan yang membaca dari tabel. |
WRITE_COUNT |
INT64 |
Jumlah kueri yang menulis ke tabel. |
DELETE_COUNT |
INT64 |
Jumlah kueri yang melakukan penghapusan pada tabel. |
Jika Anda memasukkan data ke dalam database menggunakan mutasi, write_count
akan bertambah 1 untuk setiap tabel yang diakses oleh pernyataan penyisipan. Selain itu,
kueri yang mengakses indeks, tanpa memindai tabel yang mendasarinya, hanya
menaikkan 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 gabungan. 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 baca dan kueri 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
GoogleSQL
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:
table_name
harus berupa tabel atau indeks yang ada dalam database.
PostgreSQL
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:
table_name
harus berupa tabel atau indeks yang ada dalam database.
Mengueri 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:
table_name
harus berupa tabel atau indeks yang ada dalam database.
PostgreSQL
SELECT interval_end, read_query_count, write_count, delete_count FROM spanner_sys.table_operations_stats_hour WHERE interval_end > spanner.timestamptz_subtract(now(), '14 DAY') AND table_name = 'table_name' ORDER BY interval_end DESC;
Dengan:
table_name
harus berupa tabel atau indeks yang ada dalam database.
Mengirim kueri ke tabel dan indeks yang tidak digunakan 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 berikutnya
Gunakan Statistik ukuran tabel untuk menentukan ukuran tabel dan indeks Anda.
Pelajari alat Introspeksi lainnya.
Pelajari lebih lanjut praktik terbaik SQL untuk Spanner.