Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Phương pháp hiệu quả nhất để hết hạn hồ sơ sau 10 phút kể từ khi tạo

Cách hiệu quả nhất để làm điều này là sử dụng chế độ xem. Huh? Điều đó có liên quan gì đến vấn đề này? Chà, đừng xóa 10 phút sau phường. Thay vào đó, hãy tạo một chế độ xem với logic sau:

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

Đối với hiệu suất, bạn muốn có chỉ mục về recoveries(expiry) , vì vậy việc này sẽ nhanh chóng.

Sau đó, khi bạn rảnh rỗi - một lần mỗi ngày hoặc một lần mỗi giờ hoặc một lần mỗi tuần - xóa các bản ghi không cần thiết bằng:

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

Cách tiếp cận này có một số ưu điểm:

  • Sự hiện diện của dữ liệu là chính xác trong 10 phút, thay vì dựa trên lịch trình của một số công việc.
  • Quá trình xóa thực sự có thể diễn ra khi hệ thống ngừng hoạt động.
  • Nếu một công việc cron không thực thi được thì dữ liệu không bị "hỏng" - tức là bạn sẽ không nhận được dữ liệu quá cũ.
  • Nếu hệ thống đang bận (nhiều đoạn chèn), thì các đoạn chèn sẽ không cạnh tranh với việc xóa, làm chậm hệ thống hơn nữa.


  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 callback - có điều gì như vậy không?

  2. PHP bỏ qua chứng chỉ ssl khi kết nối với MySql

  3. Ví dụ về FORMAT () trong MySQL

  4. MySQL - chọn gần một điểm không gian

  5. MySQL:vượt quá thời gian chờ khóa