mysql尝试重新启动事务_如何避免mysql'尝试获取锁时发现死锁;尝试重新启动交易'...

我有一个innoDB表记录在线用户。它在用户刷新的每个页面上得到更新,以跟踪他们在哪些页面上以及他们上次访问网站的日期。然后我有一个每15分钟运行一次的cron来删除旧记录。如何避免mysql'尝试获取锁时发现死锁;尝试重新启动交易'

我得到了'尝试锁定时发现的死锁;尝试重新启动事务'昨天晚上大约5分钟,它似乎是在此表中运行INSERT时。有人可以建议如何避免这个错误?

===编辑===

这里是正在运行的查询:

第一次访问网站:

INSERT INTO onlineusers SET

ip = 123.456.789.123,

datetime = now(),

userid = 321,

page = '/thispage',

area = 'thisarea',

type = 3

在每个页面刷新:

UPDATE onlineusers SET

ips = 123.456.789.123,

datetime = now(),

userid = 321,

page = '/thispage',

area = 'thisarea',

type = 3

WHERE id = 888

克龙每隔15分钟:

DELETE FROM onlineusers WHERE datetime <= now() - INTERVAL 900 SECOND

然后做一些罪名来记录一些统计数据(即:会员在线,访客在线)。

2010-02-25

David

+0

你能提供一些关于表结构的更多细节吗?有没有聚集或非聚集索引? –

2010-03-06 19:31:26

+9

http://dev.mysql.com/doc/refman/5.1/en/innodb-deadlocks.html - 运行“显示引擎innodb状态”将提供有用的诊断。 –

2010-03-07 05:48:18

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值