因此,在我的工作中,我们有一个主服务器和一个服务器进行复制,我们有一个跟踪表,这个跟踪表受到重创,许多插入都带有'ON DUPLICATE KEY UPDATE'子句。该表是InnoDB,因此它锁定在行级别。我有一个查询从当前正在写入的东西中选择数据,但它在主服务器与从服务器上的行为不同,即在主服务器上它将永远不会完成,在服务器上它将立即完成,并且想要知道原因。
我可以理解,查询在处理正在更新的易失性行时会出现问题,但这种情况也会发生在奴隶上,尽管会以更加规律的间隔进行。
SELECT SUM(hits) AS hits, DATE(`when`) AS thedate
FROM tracking tr
WHERE tr.geo_country IN('FR')
AND tr.`when` BETWEEN '2013-08-23 00:00:00' AND '2013-08-23 23:59:59'
GROUP BY thedate
在任一服务器上都没有发生锁定,只能在show rowlist中看不到单行。