我有一个记录在线用户的innoDB表.它会在用户每次刷新页面时更新,以跟踪他们所在的页面以及他们最后一次访问网站的日期.然后我有一个cron,每15分钟运行一次,删除旧记录.
我在试图打开锁时遇到了"死锁";昨晚try 重新启动"事务"大约5分钟,在向该表中运行INSERT时似乎是这样.有人能建议如何避免这个错误吗?
==编辑===
以下是正在运行的查询:
First Visit to site:
INSERT INTO onlineusers SET
ip = 123.456.789.123,
datetime = now(),
userid = 321,
page = '/thispage',
area = 'thisarea',
type = 3
On each page refresh:
UPDATE onlineusers SET
ips = 123.456.789.123,
datetime = now(),
userid = 321,
page = '/thispage',
area = 'thisarea',
type = 3
WHERE id = 888
Cron every 15 minutes:
DELETE FROM onlineusers WHERE datetime <= now() - INTERVAL 900 SECOND
然后,它会进行一些计数来记录一些统计数据(即:在线会员、在线访客).