Mysql
 sql >> база данни >  >> RDS >> Mysql

Най-ефективният метод за изтичане на записите след 10 минути след създаването

Най-ефективният начин да направите това е да използвате изглед. а? Какво общо има това с проблема? Е, не правете изтриването 10 минути след отдели. Вместо това създайте изглед със следната логика:

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

За производителност искате индекс за recoveries(expiry) , така че това трябва да е бързо.

След това, в свободното си време – веднъж на дата, или веднъж на час, или веднъж седмично – изтрийте ненужните записи с:

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

Този подход има няколко предимства:

  • Наличието на данни е точно 10 минути, а не въз основа на планирането на някаква работа.
  • Реалните изтривания могат да се осъществят, когато системата е в покой.
  • Ако задание на cron не се изпълни, данните не са „повредени“ – тоест не получавате твърде стари данни.
  • Ако системата е заета (много вмъквания), тогава вмъкванията не се конкурират с изтриванията, което допълнително забавя работата на системата.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Редът на именувани параметри има смисъл за MySql .Net доставчик на данни?

  2. MySQL:Не вмъквайте нов ред, ако определените редове са еднакви

  3. Съществува ли драйвер Go Mysql, който поддържа множество изрази в рамките на един низ?

  4. Изтрийте от множество таблици, като използвате поръчка по и лимит

  5. SQL заявка за преброяване в група с определено условие