Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Metode paling efisien untuk kedaluwarsa catatan setelah 10 menit dari pembuatan

Cara paling efisien untuk melakukan ini adalah dengan menggunakan tampilan. Hah? Apa hubungannya dengan masalahnya? Nah, jangan lakukan penghapusan 10 menit setelah bangsal. Sebagai gantinya, buat tampilan dengan logika berikut:

create view v_recoveries as
    select r.*
    from recoveries r
    where expiry > date_sub(now(), interval 10 minutes);

Untuk kinerja, Anda menginginkan indeks pada recoveries(expiry) , jadi ini harus cepat.

Kemudian, di waktu luang Anda -- sekali per tanggal, atau sekali per jam, atau sekali per minggu -- hapus catatan yang tidak diperlukan dengan:

DELETE FROM `recoveries`
    WHERE `expiry` <= date_sub(now(), interval 10 minutes);

Pendekatan ini memiliki beberapa keuntungan:

  • Data yang ada tepat 10 menit, bukan berdasarkan penjadwalan beberapa pekerjaan.
  • Penghapusan sebenarnya dapat dilakukan saat sistem diam.
  • Jika tugas cron gagal dijalankan, data tidak "rusak" -- artinya, Anda tidak mendapatkan data yang terlalu lama.
  • Jika sistem sibuk (banyak sisipan), maka sisipan tidak bersaing dengan penghapusan, semakin memperlambat sistem.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara menyimpan beberapa opsi dalam satu tabel?

  2. Menggunakan klausa MySQL IN sebagai semua inklusif (DAN bukannya OR)

  3. Nilai Pengulangan Grup_Concat MySQL

  4. MySQL - Tidak Dapat Membuat Tampilan dengan variabel SET di dalamnya

  5. mysql group_concat dengan hitungan di dalamnya?