【发布时间】:2011-03-14 21:00:44
【问题描述】:
我们在新插入的记录中随机看到此行为,并且仅在生产数据库(Amazon 的 RDS)上。看起来与死锁有关...(未报告错误)
受影响的表是 InnoDB,payment_id 是自动递增的,所有交易结束时间都是毫秒级的。所有连接都在同一台服务器上,启用了自动提交并且没有复制(就亚马逊的文档而言)。
连接 #1:
2011-03-07 14:09:54 INSERT INTO Payments SET payment_transaction = 'XYZ'
连接 #2:
2011-03-07 14:10:06: SELECT * FROM payment WHERE
payment_transaction= 'XYZ' LIMIT 0, 1
响应:空
2011-03-07 14:10:06: SELECT * FROM payment ORDER BY
payment_idDESC LIMIT 0, 1
响应:[payment_id] => 26242,[payment_transaction] => ABC
2011-03-07 14:50:06: SELECT * FROM payment WHERE
payment_transaction= 'XYZ' LIMIT 0, 1
响应:[payment_id] => 26243,[payment_transaction] => XYZ
【问题讨论】:
-
你期待会发生什么?
-
数据库是否使用复制?是否连接到同一台服务器?
-
(单个)数据库在 Amazon 的 RDS 上运行,根据他们的文档,不涉及复制。
-
第二个查询和最后一个查询(相同)应该返回相同的结果。
-
输入时检查空格,这可能是不同的