sql >> Databáze >  >> RDS >> Mysql

Nejúčinnější způsob vypršení platnosti záznamů po 10 minutách od vytvoření

Nejúčinnějším způsobem, jak toho dosáhnout, je použít pohled. co? Co to má společného s problémem? Nedělejte mazání 10 minut po odděleních. Místo toho vytvořte zobrazení s následující logikou:

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

Pro výkon chcete index recoveries(expiry) , takže by to mělo být rychlé.

Pak ve svém volném čase – jednou za rande, jednou za hodinu nebo jednou za týden – smažte nepotřebné záznamy pomocí:

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

Tento přístup má několik výhod:

  • Přítomnost dat je přesně 10 minut, nikoli na základě plánování nějaké úlohy.
  • Skutečné mazání může probíhat, když je systém v klidu.
  • Pokud se úloha cron nezdaří, data nejsou „poškozená“ – to znamená, že nezískáte data, která jsou příliš stará.
  • Pokud je systém zaneprázdněn (mnoho vložení), pak vložky nesoutěží s mazáními, což dále zpomaluje systém.


  1. Chyba MySQL 1153 – Mám paket větší než bajtů „max_allowed_packet“

  2. Vrátit seznam databázových poštovních profilů v SQL Server (T-SQL)

  3. ImportError:Žádný modul s názvem 'MySQL'

  4. Zobrazení výsledků dotazů MySQL ze Servletu do JSP