Halaman ini membahas metrik waktu aktif (TTL) Spanner. Untuk mempelajari lebih lanjut, lihat Tentang TTL.
Metrik
Spanner memberikan informasi tentang aktivitas TTL di tabel sistem yang dapat dibaca dengan kueri SQL, dan sebagai metrik yang diakses melalui Cloud Monitoring.
Tabel sistem melaporkan informasi TTL per tabel untuk database, sedangkan Cloud Monitoring melaporkan metrik di level database.
Menggunakan kueri SQL
Spanner menyediakan tabel bawaan yang melacak informasi terkait TTL. Tabel tersebut diberi nama SPANNER_SYS.ROW_DELETION_POLICIES
dan memiliki
skema berikut.
Nama kolom | Jenis | Deskripsi |
---|---|---|
TABLE_NAME | STRING | Nama tabel yang berisi kebijakan TTL ini. |
PROCESSED_WATERMARK | TIMESTAMP | Kebijakan ini telah berjalan pada semua baris dalam tabel saat ini. Beberapa partisi tabel mungkin telah diproses baru-baru ini, sehingga stempel waktu ini menunjukkan partisi yang paling lama diproses. Biasanya, proses ini memerlukan waktu 72 jam. |
UNDELETABLE_ROWS | INT64 | Jumlah baris yang tidak dapat dihapus oleh kebijakan TTL. Lihat Baris yang tidak dapat didelegasikan untuk detail selengkapnya. |
MIN_UNDELETABLE_TIMESTAMP | TIMESTAMP | Stempel waktu terlama untuk baris yang tidak dapat dihapus yang diamati selama siklus pemrosesan terakhir. |
Informasi kebijakan penghapusan ditampilkan per tabel untuk database Anda.
Anda dapat membuat kueri data ini dengan kueri SQL yang mirip dengan berikut ini:
SELECT TABLE_NAME, UNDELETABLE_ROWS
FROM SPANNER_SYS.ROW_DELETION_POLICIES
WHERE UNDELETABLE_ROWS > 0
Tabel SPANNER_SYS
hanya dapat diakses melalui antarmuka SQL;
misalnya:
- Halaman Spanner Studio di konsol Google Cloud
- Perintah
gcloud spanner databases execute-sql
executeQuery
API
Metode pembacaan tunggal lainnya yang disediakan Spanner tidak mendukung
SPANNER_SYS
.
Menggunakan Cloud Monitoring
Spanner menyediakan metrik berikut untuk memantau aktivitas TTL di tingkat database:
row_deletion_policy/deleted_rows
adalah jumlah baris yang dihapus oleh kebijakan TTL.row_deletion_policy/undeletable_rows
adalah jumlah baris yang cocok dengan pernyataan penghapusan baris (GoogleSQL) atauTTL INTERVAL
(PostgreSQL), tetapi tidak dapat dihapus. Hal ini biasanya karena baris memiliki terlalu banyak baris turunan, yang menyebabkan tindakan melebihi batas transaksi Spanner.row_deletion_policy/processed_watermark_age
adalah waktu antara sekarang dan stempel waktu baca yang digunakan oleh siklus terakhir yang berhasil (dengan atau tanpa baris yang tidak dapat dihapus).
Metrik ini tersedia melalui Cloud Monitoring dan Konsol Google Cloud.
Memantau
Anda juga dapat memantau aktivitas TTL lainnya.
Temukan pemindaian terakhir yang berhasil
Anda dapat menemukan waktu snapshot terakhir saat Spanner menyelesaikan pemindaian tabel untuk mencari baris yang sudah tidak berlaku. Untuk melakukannya sebagai kueri SQL:
SELECT PROCESSED_WATERMARK
FROM SPANNER_SYS.ROW_DELETION_POLICIES
WHERE TABLE_NAME = $name
Atau, metrik row_deletion_policy/process_watermark_age
menampilkan informasi yang serupa, tetapi dinyatakan sebagai perbedaan antara waktu saat ini dan waktu pemindaian terakhir. Metrik ini tidak diperinci menurut tabel, tetapi merepresentasikan waktu pemindaian terlama dari setiap tabel dengan TTL-nya aktif dalam database.
Baris yang cocok dengan kebijakan TTL biasanya dihapus dalam waktu 72 jam setelah tanggal habis masa berlakunya. Anda dapat menyetel pemberitahuan di
processed_watermark_age
sehingga Anda akan diberi tahu jika waktu melebihi 72 jam.
Jika processed_watermark_age
lebih lama dari 72 jam, hal ini mungkin menunjukkan bahwa tugas dengan prioritas yang lebih tinggi mencegah TTL berjalan. Dalam hal ini, sebaiknya
periksa penggunaan CPU dan
tambahkan lebih banyak kapasitas komputasi jika diperlukan. Jika penggunaan CPU berada
dalam rentang yang direkomendasikan, periksa hotspotting menggunakan
Key Visualizer.
Memantau baris yang dihapus
Untuk memantau aktivitas TTL di tabel Anda, buat grafik metrik row_deletion_policy/deleted_rows
. Metrik ini menampilkan jumlah
baris yang dihapus dari waktu ke waktu.
Jika tidak ada data yang masa berlakunya habis, metrik ini kosong.
Memantau baris yang tidak dapat dihapus
Jika TTL tidak dapat menghapus baris, Spanner akan otomatis mencoba ulang.
Jika, setelah percobaan ulang, tindakan TTL tidak dapat diproses, Spanner akan melewati baris dan melaporkannya dalam metrik row_deletion_policy/undeletable_rows_count
.
Anda dapat menyetel pemberitahuan di
row_deletion_policy/undeletable_rows_count
untuk menerima notifikasi tentang jumlah
yang bukan nol.
Jika menemukan jumlah yang bukan nol, Anda dapat membuat kueri untuk mengelompokkan jumlah berdasarkan tabel:
SELECT TABLE_NAME, UNDELETABLE_ROWS, MIN_UNDELETABLE_TIMESTAMP
FROM SPANNER_SYS.ROW_DELETION_POLICIES
WHERE UNDELETABLE_ROWS > 0
Untuk mencari konten baris yang tidak dapat dihapus:
SELECT *
FROM $TABLE_NAME
WHERE $EXPIRE_COL >= $MIN_UNDELETABLE_TIMESTAMP
Umumnya, kegagalan penghapusan baris disebabkan oleh update bertahap pada tabel dan indeks yang disisipkan sehingga ukuran transaksi yang dihasilkan melebihi batas mutasi Spanner. Anda dapat mengatasi masalah ini dengan memperbarui skema untuk menambahkan kebijakan TTL pada tabel yang disisipkan.