我们在新插入的记录上随机看到此行为,并且仅在生产数据库(Amazon的RDS)上看到。看起来像死锁相关的东西......(没有报告错误)
受影响的表是InnoDB,payment_id是自动递增的,所有事务结束时间都是毫秒级。所有连接都在同一台服务器上,启用了自动提交,并且没有复制(就Amazon的文档而言)。
连接#1:
2011-03-07 14:09:54 INSERT INTO付款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_id
DESC 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
答案 0 :(得分:0)
它依赖于你正在使用的功能,看看SELECT指令使用 mysql_num_rows()影响了多少行,使用 mysql_affected_rows()和DELETE,根据{{3}}更新qnd INSERT指令。
答案 1 :(得分:0)
通过向应用程序添加一些调试点,我注意到这些(随机有问题的)INSERT实际上需要大约50秒才能完成(与日志所说的相反)。因此,对于遇到此问题的任何人,请确保在应用程序环境中对INSERT的开始和结束时间进行基准测试。