Python MySQL-查询被意外缓存

时间:2012-03-26 03:37:28

标签: python mysql

我有一个小问题(缺少一个更好的词)与MySQL db。我正在使用Python。 所以我有这个表定期插入行。定期为1行/秒。 我一起运行两个Python脚本。一个以1行/秒模拟插入的模拟器。我也关闭了自动提交并在一些行之后显式提交,比如10.

另一个脚本是表上的简单“SELECT count(*)...”查询。此查询不会显示表当前具有的行数。当脚本开始运行时,它固执地停留在表最初的行数上。我甚至试过“SELECT SQL_NO_CACHE count(*)...”没有效果。

任何帮助都将不胜感激。

3 个答案:

答案 0 :(得分:2)

我的猜测是你正在使用具有REPEATABLE READ隔离模式的INNODB。尝试将隔离模式设置为READ COMMITTED

SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED

另一种方法是每次执行select查询时启动新事务。 Read more here

答案 1 :(得分:1)

如果在阅读器中也关闭了自动提交,那么它将在事务中进行读取,从而不会看到其他脚本正在执行的写入。

答案 2 :(得分:0)

我的猜测是读者或作者(很可能是作者)在未提交的交易中运作。尝试确保编写者在每次写入后提交,并尝试从读者那里ROLLBACK以确保它不在事务中。