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) atauTTL 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.