sql >> Database teknologi >  >> RDS >> Mysql

Den mest effektive metode til at udløbe poster efter 10 minutter fra oprettelse

Den mest effektive måde at gøre dette på er at bruge en visning. Hvad? Hvad har det med problemet at gøre? Nå, lad være med at slette 10 minutter efter afdelingerne. Opret i stedet en visning med følgende logik:

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

For ydeevne vil du have et indeks på recoveries(expiry) , så det burde være hurtigt.

Derefter, når du har lyst – én gang pr. dato, eller én gang i timen eller én gang om ugen – slet unødvendige poster med:

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

Denne tilgang har flere fordele:

  • Tilstedeværelsen af ​​data er præcis 10 minutter, snarere end baseret på planlægningen af ​​et job.
  • De faktiske sletninger kan finde sted, når systemet er i ro.
  • Hvis et cron-job ikke kan udføres, er dataene ikke "ødelagt" - det vil sige, du får ikke data, der er for gamle.
  • Hvis systemet er optaget (mange indsættelser), så konkurrerer indsætningerne ikke med sletninger, hvilket gør systemet yderligere langsommere.


  1. Visual Studio MySQL-datasætfejl

  2. kontrol af brugerstatus (aktiv, inaktiv) på en webside

  3. MySQL Performance Benchmarking:MySQL 5.7 vs MySQL 8.0

  4. Hvordan kan jeg formatere en MySQL TIMEDIFF uden sekunder?