全部产品
Search
文档中心

PolarDB:Panduan Penggunaan TTL

更新时间:Feb 11, 2026

Topik ini menjelaskan fitur pembersihan data kedaluwarsa dari PolarDB for MySQL.

Persyaratan versi

Versi mesin database yang mendukung PolarDB MySQL Edition adalah sebagai berikut:

  • MySQL 8.0.1, dengan versi minor 8.0.1.1.49.2 atau lebih baru.

  • MySQL 8.0.2, dengan versi minor 8.0.2.2.29.2 atau lebih baru.

Untuk melihat versi kernel Anda, lihat Panduan Versi Kernel.

Catatan penting

  • Anda tidak dapat mengatur properti TTL pada tabel temporary, seperti tabel temporary lokal dan global.

  • Tabel dengan properti TTL tidak mendukung fitur-fitur seperti IMCI, Global Secondary Index (GSI), atau tabel partisi.

  • Tabel dengan properti TTL tidak dapat berfungsi sebagai tabel utama dalam kendala kunci asing yang dirujuk oleh tabel lain.

  • Anda tidak dapat mendefinisikan Pemicu pada tabel dengan properti TTL.

  • Data kedaluwarsa tidak dijamin dihapus segera. Waktu penghapusan bergantung pada siklus penjadwalan tugas pembersihan latar belakang.

  • Saat memulihkan data dari backup atau dump database, atur loose_innodb_enable_ttl_purge ke OFF untuk menonaktifkan pembersihan berbasis TTL. Hal ini mencegah penghapusan yang tidak disengaja karena semua data yang dipulihkan mungkin sudah kedaluwarsa.

  • Kolom yang ditentukan untuk TTL harus bertipe TIMESTAMP.

  • Data yang dibersihkan oleh TTL tidak menghasilkan catatan binary logging (binlog). Saat menggunakan binlog untuk menyinkronkan data, jika sebuah tabel di database sumber memiliki TTL yang diaktifkan, konflik kunci dapat terjadi saat menyinkronkan ke database sekunder.

Sintaksis

Anda dapat mengonfigurasi TTL untuk sebuah tabel menggunakan pernyataan CREATE TABLE atau ALTER TABLE.

Buat tabel dengan TTL

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

Buat tabel bernama t1 dan tentukan created_at sebagai kolom timestamp TTL untuk merepresentasikan waktu pembuatan data. Atur nilai time-to-live (TTL) untuk created_at guna mengontrol penghapusan data.

  • Atur TTL maksimum untuk 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

    Pengaturan TTL='created_at@100' menentukan bahwa baris dalam tabel kedaluwarsa setelah 100 detik. Data kedaluwarsa akan dihapus kemudian selama proses pembersihan.

  • Atur TTL maksimum untuk 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
    • Pengaturan TTL ='created_at'+ INTERVAL 3 HOUR mengonfigurasi TTL selama 3 jam. Data yang berusia lebih dari 3 jam akan dihapus secara otomatis.

    • Sintaksis TTL (time-to-live) ini mendukung berbagai satuan waktu: YEAR, QUARTER, MONTH, WEEK, DAY, HOUR, MINUTE, dan SECOND. Pilih satuan yang paling sesuai dengan kebutuhan manajemen data Anda.

Ubah TTL tabel

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

Ubah TTL untuk tabel t1 dengan menyesuaikan nilai time-to-live (TTL) untuk kolom created_at.

  • Atur TTL maksimum untuk created_at menjadi 10.000 detik.

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

    Mengatur TTL menjadi 10.000 detik pada kolom created_at memastikan data dihapus 10.000 detik setelah dibuat.

  • Atur TTL maksimum untuk created_at menjadi 3 hari.

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

    Menambahkan 3 hari ke timestamp created_at menetapkan waktu kedaluwarsa menjadi 3 hari. Data yang berusia lebih dari 3 hari akan dihapus secara otomatis.

Hapus TTL dari tabel

ALTER TABLE t1 TTL = '';

Periksa pengaturan 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 menjalankan pernyataan ini untuk memeriksa apakah suatu tabel memiliki pengaturan TTL.

Deskripsi parameter

Parameter global berikut mengontrol pembersihan data kedaluwarsa berbasis TTL:

Catatan

PolarDB memungkinkan Anda mengubah parameter global berikut di Konsol untuk mengontrol pembersihan data TTL kedaluwarsa.

Nama Parameter

Deskripsi

loose_innodb_enable_ttl_purge

Mengaktifkan atau menonaktifkan pembersihan data kedaluwarsa berbasis TTL.

Nilai yang valid:

  • ON: Mengaktifkan pembersihan berbasis TTL.

  • OFF (default): Menonaktifkan pembersihan berbasis TTL.

Catatan

Anda harus mengaktifkan pembersihan TTL secara manual di Konsol.

loose_innodb_ttl_min_interval

Interval TTL minimum yang diizinkan. Nilai default: 100. Satuan: detik.

loose_innodb_ttl_purge_thread

Jumlah thread yang digunakan untuk membersihkan data TTL kedaluwarsa. Nilai default: 4. Setelah mengubah parameter ini, restart parameter innodb_enable_ttl_purge agar perubahan berlaku.

loose_innodb_ttl_cluster_index_purge_batch_size

Jika kolom TTL tidak memiliki indeks, tugas pembersihan akan memindai kunci utama. Jumlah default baris yang dipindai per batch: 10.000.

loose_innodb_ttl_index_purge_batch_size

Jika kolom TTL memiliki indeks, tugas pembersihan akan memindai indeks tersebut. Jumlah default baris yang dipindai per batch: 500.

loose_innodb_ttl_purge_start_hour

Jam mulai tugas pembersihan TTL. Nilai default: 0. Nilai yang valid: 0 hingga 23. Tidak boleh melebihi innodb_ttl_purge_end_hour.

loose_innodb_ttl_purge_end_hour

Jam akhir tugas pembersihan TTL. Nilai default: 0. Nilai yang valid: 0 hingga 23. Tidak boleh kurang dari innodb_ttl_purge_start_hour.

loose_innodb_ttl_finished_job_expired_days

Periode retensi catatan dalam tabel sistem mysql.ttl_job_history. Nilai default: 90. Nilai yang valid: 1 hingga 365. Satuan: hari.

Monitor TTL

Sistem mengumpulkan metrik waktu proses untuk TTL secara berkala. Sistem menyediakan tabel sistem mysql.ttl_job_history untuk menampilkan detail tentang tugas pembersihan TTL. Kolom-kolom tabel tersebut dijelaskan di bawah ini:

Kolom

Deskripsi

job_id

ID pekerjaan pembersihan TTL. Biasanya berupa timestamp tingkat milidetik.

table_name

Nama tabel yang menjadi target pekerjaan pembersihan TTL ini.

state

Status pekerjaan TTL: suspended, running, atau completed.

start_time

Waktu mulai pekerjaan.

finished_time

Waktu selesai pekerjaan.

expire_time

Waktu kedaluwarsa data yang dibersihkan oleh pekerjaan TTL ini.

scan_cost

Waktu yang dihabiskan untuk memindai batch ini.

purge_cost

Waktu yang dihabiskan untuk membersihkan batch ini.

purge_rows

Jumlah baris yang dibersihkan oleh pekerjaan TTL ini.