All Products
Search
Document Center

PolarDB:Penggunaan TTL

Last Updated:Jun 06, 2026

Topik ini menjelaskan fitur Time to Live (TTL), yang secara otomatis menghapus data kedaluwarsa di PolarDB for MySQL.

Batasan versi

PolarDB for MySQL mendukung versi engine database berikut:

  • MySQL 8.0.1 dengan versi revisi 8.0.1.1.49.2 atau yang lebih baru.

  • MySQL 8.0.2 dengan versi revisi 8.0.2.2.29.2 atau yang lebih baru.

Untuk informasi selengkapnya, lihat Kernel version description.

Catatan

  • Anda tidak dapat mengatur properti TTL pada tabel temporary, termasuk local temporary tables dan global temporary tables.

  • Tabel dengan properti TTL tidak mendukung fitur seperti global secondary index (GSI) dan partitioned table.

  • Tabel dengan properti TTL tidak dapat dirujuk oleh tabel lain sebagai tabel utama dalam kendala kunci asing (foreign key constraint).

  • Tabel dengan properti TTL tidak boleh berisi trigger.

  • Data kedaluwarsa mungkin tidak langsung dihapus. Waktu penghapusan data kedaluwarsa bergantung pada siklus penjadwalan tugas pembersihan latar belakang.

  • Saat melakukan pemulihan dari tabel database atau backup, Anda perlu mengatur loose_innodb_enable_ttl_purge ke OFF untuk menonaktifkan fitur yang membersihkan data kedaluwarsa berdasarkan TTL. Hal ini karena semua data mungkin telah kedaluwarsa setelah pemulihan.

  • Kolom dengan properti TTL harus bertipe TIMESTAMP atau DATETIME.

  • Data yang dihapus oleh fitur TTL tidak menghasilkan catatan binary logging. Oleh karena itu, jika Anda menggunakan binary logging untuk sinkronisasi data dan sebuah tabel di database sumber memiliki fitur TTL yang diaktifkan, konflik nilai kunci (key value conflicts) dapat terjadi di database sekunder.

Sintaks

Anda dapat menggunakan pernyataan CREATE TABLE atau ALTER TABLE untuk mengonfigurasi fitur TTL pada suatu tabel.

Membuat tabel dengan properti TTL

Anda dapat menggunakan salah satu metode berikut untuk membuat tabel dengan properti TTL:

Tabel bernama t1 dibuat, di mana created_at adalah kolom time to live (TTL) yang menyimpan waktu pembuatan data. Anda dapat mengatur nilai TTL berdasarkan kolom created_at untuk menentukan kapan data tersebut dihapus.

  • Atur masa hidup data (created_at) menjadi 100 detik.

    CREATE TABLE `t1` (
      `a` INT PRIMARY KEY,
      `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
      KEY idx_created_at (`created_at`)
    )ENGINE=InnoDB  TTL='created_at@100';
    Catatan

    TTL='created_at@100' mengatur masa hidup baris dalam tabel menjadi 100 detik. Baris yang lebih tua dari durasi ini ditandai sebagai kedaluwarsa dan akan dihapus nanti.

  • Atur masa hidup data (created_at) menjadi 3 jam.

    CREATE TABLE `t1` (
      `a` INT PRIMARY KEY,
      `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
      KEY idx_created_at (`created_at`)
    )ENGINE=InnoDB  TTL='created_at' + INTERVAL 3 HOUR;
    Catatan
    • Ekspresi TTL ='created_at'+ INTERVAL 3 HOUR mengatur masa hidup baris dalam tabel menjadi 3 jam. Data kedaluwarsa akan dihapus secara otomatis.

    • Pengaturan TTL mendukung berbagai satuan waktu, seperti YEAR, QUARTER, MONTH, WEEK, DAY, HOUR, MINUTE, dan SECOND. Fleksibilitas ini memungkinkan Anda memilih satuan waktu yang sesuai untuk manajemen data yang efisien sesuai kebutuhan.

Memodifikasi properti TTL tabel

Anda dapat menggunakan salah satu metode berikut untuk memodifikasi properti TTL tabel:

Contoh berikut memodifikasi masa hidup kolom created_at dalam tabel t1.

  • Ubah masa hidup created_at menjadi 10.000 detik.

    ALTER TABLE `t1` TTL='created_at@10000';
    Catatan

    Pengaturan ini memastikan bahwa data dihapus secara otomatis 10.000 detik setelah waktu pembuatannya, yang didasarkan pada nilai dalam bidang created_at.

  • Ubah masa hidup created_at menjadi 3 hari.

    ALTER TABLE `t1` TTL='created_at' + INTERVAL 3 DAY;
    Catatan

    Pengaturan ini menetapkan waktu kedaluwarsa data menjadi 3 hari sejak nilai dalam kolom created_at. Data yang lebih tua dari 3 hari akan dihapus secara otomatis.

Menghapus properti TTL tabel

ALTER TABLE t1 TTL = '';

Menampilkan properti TTL tabel

SHOW CREATE TABLE `t1` FULL;

CREATE TABLE `t1` (  
`a` INT PRIMARY KEY,  
`created_at` TIMESTAMP DEFAULT 
CURRENT_TIMESTAMP,  
 KEY idx_created_at (`created_at`)
)ENGINE=InnoDB  TTL='created_at@259200';
Catatan

Anda dapat menggunakan pernyataan ini untuk memeriksa apakah suatu tabel memiliki properti TTL.

Deskripsi parameter

Parameter global berikut mengontrol pembersihan data kedaluwarsa:

Catatan

Anda dapat memodifikasi parameter global berikut di Konsol PolarDB untuk mengontrol pembersihan data kedaluwarsa.

Nama parameter

Deskripsi

loose_innodb_enable_ttl_purge

Menentukan apakah pembersihan data kedaluwarsa TTL diaktifkan.

Nilai yang valid:

  • ON: mengaktifkan pembersihan data kedaluwarsa TTL.

  • OFF (default): menonaktifkan pembersihan data kedaluwarsa TTL.

Catatan

Anda perlu membuka Konsol untuk mengaktifkan fitur pembersihan data kedaluwarsa TTL.

loose_innodb_ttl_min_interval

Waktu minimum yang diperbolehkan saat Anda mengatur waktu kedaluwarsa data. Nilai default adalah 100. Satuan default adalah detik.

loose_innodb_ttl_purge_thread

Jumlah thread untuk membersihkan data kedaluwarsa TTL. Setelah Anda memodifikasi parameter ini, Anda harus mereset parameter innodb_enable_ttl_purge agar perubahan berlaku. Nilai default adalah 4.

loose_innodb_ttl_cluster_index_purge_batch_size

Jika kolom TTL yang ditentukan tidak memiliki indeks, kunci utama dipindai untuk mencari data kedaluwarsa TTL. Jumlah baris yang dipindai dari kunci utama dalam satu waktu adalah 10.000 secara default.

loose_innodb_ttl_index_purge_batch_size

Jika kolom TTL yang ditentukan memiliki indeks, indeks tersebut dipindai untuk mencari data kedaluwarsa TTL. Jumlah baris yang dipindai dari indeks ini dalam satu waktu adalah 500 secara default.

loose_innodb_ttl_purge_start_hour

Waktu mulai tugas pembersihan TTL. Nilai default adalah 0. Rentang nilainya antara 0 hingga 23. Nilainya tidak boleh lebih besar dari innodb_ttl_purge_end_hour.

loose_innodb_ttl_purge_end_hour

Waktu akhir tugas pembersihan TTL. Nilai default adalah 0. Rentang nilainya antara 0 hingga 23. Nilainya tidak boleh lebih kecil dari innodb_ttl_purge_start_hour.

loose_innodb_ttl_finished_job_expired_days

Mengontrol waktu kedaluwarsa data dalam tabel sistem mysql.ttl_job_history. Nilai default adalah 90. Rentang nilainya antara 1 hingga 365. Satuan default adalah hari.

Memantau TTL

Sistem secara berkala mengumpulkan informasi waktu proses TTL. Anda dapat melihat status eksekusi tugas pembersihan TTL di tabel sistem mysql.ttl_job_history. Tabel berikut menjelaskan bidang-bidang dalam tabel tersebut:

Nama kolom

Deskripsi

job_id

ID tugas pembersihan TTL, biasanya berupa timestamp dalam milidetik.

table_name

Nama tabel yang terkait dengan tugas yang dijalankan oleh pekerjaan TTL ini.

state

Status eksekusi tugas TTL, termasuk pending, executing, dan completed.

start_time

Waktu mulai tugas.

finished_time

Waktu penyelesaian tugas.

expire_time

Waktu kedaluwarsa data yang dibersihkan oleh tugas TTL ini.

scan_cost

Waktu yang diperlukan untuk memindai batch ini.

purge_cost

Waktu yang diperlukan untuk membersihkan batch ini.

purge_rows

Jumlah baris data yang dibersihkan oleh tugas TTL ini.