Tag: innodb

MySQL SQL_NO_CACHE不能正常工作

我有一个表(InnoDB)插入,更新和频繁阅读(通常在几毫秒的爆发)。 我注意到,有时INSERT / UPDATE之后的SELECT语句会得到陈旧的数据。 我认为这是由于caching,但在把SQL_NO_CACHE放在它之前并没有真正做任何事情。 你如何确保SELECT始终等到先前的INSERT / UPDATE结束而不从caching中获取数据? 请注意,这些语句是从单独的请求中执行的(不在相同的代码执行中)。 也许我误解了什么SQL_NO_CACHE实际上… 更新 : @Uday,INSERT,SELECT和UPDATE语句如下所示: INSERT myTable (id, startTime) VALUES(1234, 123456) UPDATE myTable SET startTime = 123456 WHERE id = 1234 SELECT SQL_NO_CACHE * FROM myTable ORDER BY startTime 我尝试使用交易没有运气。 更新 : 我认为这实际上是INSERT的问题,而不是更新。 SELECT语句总是试图获取按时间sorting的最新行。 但是由于INSERT不执行任何表级locking,所以SELECT可能会得到旧数据。 有没有办法强制执行表级locking时执行插入?