Metrik dan pemantauan TTL

Halaman ini membahas metrik time to live (TTL) Spanner. Untuk mempelajari lebih lanjut, lihat Tentang TTL.

Metrik

Spanner memberikan informasi tentang aktivitas TTL dalam tabel sistem yang dapat dibaca dengan kueri SQL, dan sebagai metrik yang diakses melalui Pemantauan Cloud.

Tabel sistem melaporkan informasi TTL per tabel untuk database, sedangkan Cloud Monitoring melaporkan metrik di tingkat database.

Menggunakan kueri SQL

Spanner menyediakan tabel bawaan yang melacak informasi terkait TTL. Tabel ini 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 mulai saat ini. Beberapa partisi tabel mungkin telah diproses baru-baru ini, sehingga stempel waktu ini mewakili partisi yang paling baru diproses. Biasanya, dalam waktu 72 jam.
UNDELETABLE_ROWS INT64 Jumlah baris yang tidak dapat dihapus oleh kebijakan TTL. Lihat Baris yang tidak dapat dihapus untuk mengetahui 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 baca 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, sehingga tindakan tersebut 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.

Menemukan pemindaian terakhir yang berhasil

Anda dapat menemukan waktu snapshot terakhir saat Spanner menyelesaikan pemindaian tabel untuk mencari baris yang telah habis masa berlakunya. 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 serupa, tetapi dinyatakan sebagai perbedaan antara waktu saat ini dan waktu pemindaian terakhir. Metrik ini tidak dikelompokkan menurut tabel, tetapi mewakili waktu pemindaian terlama dari tabel yang mengaktifkan TTL di 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 agar Anda diberi tahu jika waktunya melebihi 72 jam.

Jika processed_watermark_age sudah lebih dari 72 jam, hal ini dapat menunjukkan bahwa tugas dengan prioritas lebih tinggi mencegah TTL berjalan. Dalam hal ini, sebaiknya periksa pemakaian CPU dan tambahkan kapasitas komputasi lainnya jika diperlukan. Jika penggunaan CPU berada dalam rentang yang direkomendasikan, periksa hotspot menggunakan Key Visualizer.

Memantau baris yang dihapus

Untuk memantau aktivitas TTL di tabel, buat grafik metrik row_deletion_policy/deleted_rows. Metrik ini menampilkan jumlah baris yang dihapus dari waktu ke waktu.

Jika tidak ada data yang habis masa berlakunya, metrik ini akan kosong.

Memantau baris yang tidak dapat dihapus

Jika TTL tidak dapat menghapus baris, Spanner akan otomatis mencoba lagi. 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 agar diberi tahu tentang jumlah yang bukan nol.

Jika menemukan jumlah yang bukan nol, Anda dapat membuat kueri untuk mengelompokkan jumlah menurut 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 pembaruan beruntun ke tabel dan indeks yang diselingi sehingga ukuran transaksi yang dihasilkan melebihi batas mutasi Spanner. Anda dapat menyelesaikan masalah ini dengan memperbarui skema untuk menambahkan kebijakan TTL terpisah pada tabel yang diselingi.