Topik ini menjelaskan implementasi fitur time to live (TTL) dalam kluster PolarDB for MySQL.
Informasi latar belakang
Fitur TTL, yang umum ditemukan di database NoSQL dan mesin penyimpanan berbasis log-structured merge-tree (LSM tree), mengimplementasikan kebijakan manajemen siklus hidup pada tingkat kunci dan baris. Fitur TTL secara efisien menghemat ruang penyimpanan dalam skenario tertentu. Pada penyimpanan key-value, thread latar belakang secara berkala memindai kunci yang kedaluwarsa dan menghapusnya. Pada database berbasis LSM tree, thread kompaksi secara berkala membersihkan baris data yang kedaluwarsa.
Contoh
Database relasional tradisional seperti MySQL, Oracle, dan PostgreSQL tidak menyediakan dukungan asli untuk fitur TTL. Fungsionalitas serupa dapat dicapai menggunakan pemicu atau prosedur tersimpan.
-- 1. Buat tabel yang memiliki kolom untuk menunjukkan informasi waktu setiap baris.
CREATE TABLE messages(
message_id VARCHAR(36) PRIMARY KEY,
sender_id VARCHAR(36),
receiver_id VARCHAR(36),
message_text TEXT,
sent_at TIMESTAMP
);
-- 2. Buat tugas terjadwal yang berjalan setiap 5 menit untuk menghapus baris yang kedaluwarsa berdasarkan kolom sent_at.
SET GLOBAL event_scheduler = ON;
CREATE EVENT delete_old_messages
ON SCHEDULE
EVERY 5 MINUTE
STARTS CURRENT_TIMESTAMP
DO
DELETE FROM messages
WHERE sent_at < DATE_SUB(NOW(), INTERVAL 5 MINUTE);Namun, metode ini dapat menimbulkan masalah berikut:
Jika baris yang kedaluwarsa tidak segera dihapus, baris tersebut masih dapat muncul dalam hasil query.
Jika sejumlah besar data perlu dihapus, kinerja database dapat mengalami fluktuasi.
Oleh karena itu, sistem database harus mendukung fitur TTL secara asli untuk manajemen TTL yang lebih tepat dan efisien.
Versi yang didukung
Anda dapat menggunakan fitur TTL di kluster yang menjalankan salah satu versi mesin database berikut:
PolarDB for MySQL 8.0.1 dengan versi revisi 8.0.1.1.49.2 atau yang lebih baru.
PolarDB for MySQL 8.0.2 dengan versi revisi 8.0.2.2.29.2 atau yang lebih baru.
Untuk informasi tentang cara melihat versi mesin database suatu kluster, lihat Kueri Versi Mesin.