Tôi có một bảng innoDB ghi lại người dùng trực tuyến. Nó được cập nhật trên mỗi trang được làm mới bởi người dùng để theo dõi những trang họ đang truy cập và ngày truy cập cuối cùng của họ vào trang web. Sau đó tôi có một cron chạy cứ sau 15 phút để XÓA các hồ sơ cũ.
Tôi đã nhận được một 'Bế tắc được tìm thấy khi cố gắng để có được khóa; hãy thử khởi động lại giao dịch 'trong khoảng 5 phút đêm qua và dường như là khi chạy INSERT vào bảng này. Ai đó có thể đề nghị làm thế nào để tránh lỗi này?
=== CHỈNH SỬA ===
Dưới đây là các truy vấn đang chạy:
Lần đầu tiên truy cập vào trang web:
INSERT INTO onlineusers SET
ip = 123.456.789.123,
datetime = now(),
userid = 321,
page = '/thispage',
area = 'thisarea',
type = 3
Trên mỗi trang làm mới:
UPDATE onlineusers SET
ips = 123.456.789.123,
datetime = now(),
userid = 321,
page = '/thispage',
area = 'thisarea',
type = 3
WHERE id = 888
Cron cứ sau 15 phút:
DELETE FROM onlineusers WHERE datetime <= now() - INTERVAL 900 SECOND
Sau đó, một số tính toán để ghi lại một số thống kê (ví dụ: thành viên trực tuyến, khách truy cập trực tuyến).