为什么mysql查询将表锁定在隔离读取未提交?

时间:2010-01-06 14:55:08

标签: mysql performance transactions isolation

有没有办法让mysql查询不对myisam表进行任何锁定?

我的问题似乎是我的Sphinx搜索索引器锁定了我的一个myisam表超过60秒,这似乎使更新语句等待锁被释放,这反过来使其他查询等待更新语句完成。索引器使用mysql_use_result并在调用mysql_free_result之前完成大部分索引工作。这是我对至少发生的事情的最好猜测,但如果你觉得这个错误,请告诉我。

解决问题的一种方法似乎是通过id范围细分索引器查询。但似乎我不应该这样做,因为我真的不需要这个查询来阻止任何其他查询同时运行。在这个用例中,性能比一致性要重要得多。

谢谢!

1 个答案:

答案 0 :(得分:1)

似乎mysql查询总是在myisam表上采用读锁定。

我的问题的解决方案是在my.cnf的[mysqld]部分设置low-priority-updates = 1。

我仍然想知道是否有办法在没有读取锁定的情况下在mysql中进行查询,但是我会打开另一个问题来获得更好的标题。

谢谢!