Metrik dan pemantauan TTL

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) atau TTL 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.