Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Najbardziej wydajna metoda wygasania rekordów po 10 minutach od utworzenia

Najskuteczniejszym sposobem na to jest użycie widoku. Co? Co to ma wspólnego z problemem? Cóż, nie rób kasowania 10 minut po totemach. Zamiast tego utwórz widok z następującą logiką:

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

Aby uzyskać wydajność, potrzebujesz indeksu na recoveries(expiry) , więc powinno to być szybkie.

Następnie, w wolnym czasie — raz na dzień, raz na godzinę lub raz w tygodniu — usuń niepotrzebne rekordy za pomocą:

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

Takie podejście ma kilka zalet:

  • Obecność danych to dokładnie 10 minut, a nie na podstawie harmonogramu jakiegoś zadania.
  • Rzeczywiste usunięcia mogą mieć miejsce, gdy system jest w stanie spoczynku.
  • Jeśli zadanie cron nie zostanie wykonane, dane nie są „uszkodzone” – to znaczy, nie otrzymujesz danych, które są zbyt stare.
  • Jeśli system jest zajęty (wiele wstawek), to wstawki nie konkurują z usuwaniem, co dodatkowo spowalnia system.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Najlepszy sposób na powstrzymanie jednej osoby przed tworzeniem wielu kont

  2. Dlaczego nadal ma niezsynchronizowane polecenia; nie możesz teraz uruchomić tego polecenia, błąd

  3. MySQL nie łączy się podczas wdrażania EC2 z Rubber

  4. Jak mogę napisać funkcję zdefiniowaną przez użytkownika w MySQL, aby po usunięciu wiersza z jednej tabeli ten konkretny wiersz z innej tabeli również został usunięty?

  5. Serwer WAMP na zielono, ale uzyskaj tylko 404