具有唯一索引的重复mysql条目

时间:2015-01-26 14:04:09

标签: mysql ruby-on-rails

我正在使用大约20,000个用户和四个应用程序服务器的rails应用程序。在对无关问题进行故障排除的过程中,我发现了数据库中的一些(大多数)重复行。这是一个例子

select transaction_uid,created_at,data from my_table where user_uid=23;

返回类似于此的内容:

|9004  | 2015-01-19 21:17:05 | "data"
|12052 | 2015-01-21 14:11:27 | "abc"
|12053 | 2015-01-21 14:11:27 | "abc"

问题在于最后两行 - uid是顺序的,时间戳是相同的(或者一个不同,最多),并且数据是相同的。

起初我认为这是一个前端问题 - 也许用户双击提交按钮,处理此插入的用例被调用两次 - 毕竟它不是真的< / em>副本,因为uid(由mysql生成)是唯一的。

许多&#39;放置&#39;陈述和堆栈跟踪之后,我相当肯定情况并非如此。我最好的猜测是,拥有多个应用程序服务器是一个问题,而且由于它并没有以负面的方式对应用程序产生重大影响,我会留下这个解释并继续前进 - 但是那里&#39这是一件有趣的事情。以下是受此影响的用户:

user_uid    duplicate transaction uid
1893        3884
2015        1332, 1592
2328        1736, 1759
2484        12499
2941        5728
368         1318
3897        2924, 3032, 4340
4581        4390, 4437, 6462, 13485
5199        5047, 7955, 13609
5639        6113, 6130, 13450, 14927
6082        11878, 13213, 14324
6673        6421
6760        12359
7761        12053, 13261

在一个应用程序中有14个用户,大约20k。客观上不是一个大问题 - 但如果这只是源自多个应用程序服务器的问题,我希望它会随机影响用户。然而,受影响的用户中,只有一半以上受到影响不止一次,其中许多受到多次影响。在看到这个之后,它让我重新思考通过前端引入这个的可能性 - 也许用户4581和5639是专业的星际争霸玩家?

奇怪的是,我感觉不舒服,只需将其粉碎到多个应用服务器。有没有人遇到过这个?

修改
在与领先的前端开发人员交谈后,我了解到所有交互式元素都使用AJAX,并且在收到来自服务器的消息之前一直处于锁定状态。因此,这实际上不可能来自前端的用户。

0 个答案:

没有答案