Tôi muốn bắt đầu đếm số lần trang web được xem và do đó cần một số loại bộ đếm đơn giản. Phương pháp mở rộng tốt nhất để làm điều này là gì?Cách tốt nhất để thực hiện một trường truy cập trong MySQL
Giả sử tôi có một Frobs bàn nơi mỗi hàng tương ứng với một trang - một số tùy chọn hiển nhiên là:
Có một int NumViews unsigned lĩnh vực trong bảng Frobs mà được được cập nhật theo từng xem sử dụng
UPDATE Frobs SET NumViews = NumViews + 1
. Đơn giản nhưng không tốt ở quy mô lớn như tôi hiểu.Có bảng riêng FrobViews trong đó hàng mới được chèn cho mỗi chế độ xem. Để hiển thị số lượt xem , bạn cần phải thực hiện một đơn giản
SELECT COUNT(*) AS NumViews FROM FrobViews WHERE FrobId = '%d' GROUP BY FrobId
. Điều này không liên quan đến bất kỳ cập nhật nào để tránh việc khóa bảng trong các bảng MyISAM - tuy nhiên, hiệu suất đọc sẽ bị ảnh hưởng nếu bạn muốn hiển thị số lượt xem trên mỗi trang.
Bạn làm như thế nào?
Có một số lời khuyên hay ở đây: http://www.mysqlperformanceblog.com/2007/07/01/implementing-efficient-counters-with-mysql/ nhưng tôi muốn nghe quan điểm của cộng đồng SO.
Tôi đang sử dụng InnoDb vào lúc này, nhưng tôi quan tâm đến câu trả lời cho cả InnoDb và MyISAM.