2012-04-20 31 views
13

Trong ứng dụng web của tôi, tôi sử dụng hai sự kiện định kỳ "dọn sạch" một trong các bảng trong cơ sở dữ liệu, cả hai được thực hiện sau mỗi 15 phút hoặc lâu hơn.Sự kiện MySQL đắt bao nhiêu?

Câu hỏi của tôi là, điều này có thể dẫn đến các sự cố về hiệu suất trong tương lai không? Bởi vì tôi đã đọc một nơi nào đó-Tôi không nhớ chính xác rằng MySQL events được cho là sẽ được lên kế hoạch chạy mỗi tháng một lần hoặc lâu hơn. Thing là, sự kiện tương tự này giữ cho bảng trong một kích thước khá giảm (khi họ xóa hồ sơ cũ hơn 15 ~ phút), có lẽ điều này bù đắp tần suất thực hiện của họ, phải không?

Ngoài ra, tốt hơn là nên có một sự kiện lớn của MySQL hoặc nhiều sự kiện nhỏ nếu chúng được gọi trong cùng một tần suất?

Trả lời

4

Tôi không nghĩ rằng có chỉ báo hiệu suất trong cơ sở hàng tháng hàng tháng chỉ là một gợi ý về việc phải làm gì với nó. Vì vậy, tôi nghĩ rằng bạn đang ok với làm sạch của bạn bằng cách sử dụng các sự kiện.

Trong cuối cùng documentation suggets rằng các sự kiện là

Về mặt lý thuyết, điều này cũng tương tự như ý tưởng của crontab Unix (còn được gọi là một “công việc định kỳ”) hoặc Windows Task Scheduler.

Và khái niệm cho những thứ đó là bạn có thể chạy một công việc mỗi phút nếu bạn muốn.


Trên phần thứ hai của câu hỏi đó:

Serialize hoặc lây lan nó lên. Nếu bạn chia chúng thành nhiều sự kiện sẽ chạy cùng lúc, bạn sẽ tạo ra các đột biến có thể sử dụng cpu rất cao có thể làm chậm ứng dụng trong khi xử lý các sự kiện.

Vì vậy, hãy đóng gói mọi thứ vào một sự kiện để nó chạy liên tiếp hoặc trải rộng các sự kiện đơn lẻ để chúng thực thi vào các thời điểm khác nhau trong khung thời gian 15 phút. Cá nhân tôi nghĩ rằng người đầu tiên là được ưa thích, đóng gói chúng thành một sự kiện duy nhất như sau đó họ được đảm bảo để chạy liên tiếp, ngay cả khi một người duy nhất trong số họ tiếp tục chạy lâu hơn bình thường.

Cũng vậy với cronjobs. Nếu bạn tiết kiệm 30 hàng xuất khẩu dài hạn tại một thời điểm, ứng dụng của bạn sẽ thất bại thảm hại trong khoảng thời gian đó (học được cách khó).

+0

Cảm ơn người trả lời của bạn! rất chi tiết. Tôi nghĩ rằng tôi sẽ đi với tùy chọn thứ hai mà bạn đã đề cập, có một số sự kiện nhưng thực thi chúng một cách không đồng bộ để phân phối việc sử dụng cpu – federicot

+1

@JohnDoe btw, nếu bạn đang xem xét việc tạo nhật ký hoặc điều gì đó bạn nên xem tại mongo-db cho rằng, có một tính năng được gọi là bộ sưu tập giới hạn sẽ giới hạn kích thước của một bảng và làm sạch nó tự động: http://www.mongodb.org/display/DOCS/Capped+Collections – bardiir

Các vấn đề liên quan