瓶颈问题mysql

时间:2012-07-10 06:46:56

标签: php mysql optimization

我有这个项目拍卖门户,问题是有时候用户无法出价或者更好的话是请求出价有时需要2-3秒才可以注册,冲突就是在系统检测到有人出价之前,拍卖已经关闭。

我添加了一个日志,看看发生了什么,这是我发现的:

Bid insert date        |    Auction close date
2012-06-25 14:40:57         2012-06-25 14:40:54

正如您所看到的,拍卖已经结束,但竞标价格延迟了3秒。 只是为了澄清,如果拍卖已经关闭,用户就无法出价,所以我确信请求是在关闭之前提出的。

每天发生一次拍卖,我不知道是什么能引发这个问题。 我正在使用PHP和MySQL。

3 个答案:

答案 0 :(得分:1)

可能的原因是用户加载包含“出价”按钮的页面,拍卖结束,按钮仍在那里并且相应地执行操作。如果您在插入之前验证拍卖是否已关闭,则永远不会发生这种情况。 SELECT和INSERT之间的时间不应该是> 0.1秒我假设您在添加最后一次出价之前未验证竞价状态。

答案 1 :(得分:1)

2-3秒?

您在出价请求时运行了多少个查询?我想:

1)用户是否已登录? 2)是否允许出价? 3)拍卖仍然开放吗? 4)发布出价

我不认为这4个查询运行时间超过一秒,除非你有非常好的书面查询。您使用的是什么MySQL数据库层?您是否确保您的代码尽可能简化?即你多久打开一次数据库等等。

如果他们出价并且拍卖在他们的出价处理之前完成,那就是坚韧的cookie。你还没赢。同样的事情有时在eBay上发生,而且它很难。如果问题是您的系统允许延迟出价获胜,那么您需要在这方面重新审视您的代码。在保存出价之前,最后一次出价尝试应该肯定检查拍卖是否仍在运行。这不应该花费任何时间。

也许你应该检查你的表索引。太少,数据搜索速度慢,数据插入速度太快,影响数据插入速度。

可能有很多错误,从简单的索引错误到狡猾的查询/循环等等。

答案 2 :(得分:0)

不匹配确切的结束时间戳,但将其与 (关闭时间 - turnaround_time)。

假设结束时间是14:00:00,请求的周转时间是10秒。然后,如果在13:59:50之前提出请求,则只会被考虑。