为什么mysql查询在隔离读取未提交时使用表锁?

为什么mysql查询在隔离读取未提交时使用表锁?,mysql,performance,transactions,isolation,Mysql,Performance,Transactions,Isolation,有没有办法让mysql查询不在myisam表上加锁 我的问题似乎是,我的Sphinx搜索索引器在我的一个myisam表上锁定了60多秒,这似乎使update语句等待释放锁,这反过来又使其他查询等待update语句完成。索引器使用mysql\u-use\u-result,并在调用mysql\u-free\u-result之前进行大量的索引工作。这是我对正在发生的事情的最好猜测,但如果你觉得这不对,请让我知道 解决此问题的一种方法似乎是按id范围细分索引器查询。但似乎我不应该这样做,因为我真的不需要

有没有办法让mysql查询不在myisam表上加锁

我的问题似乎是,我的Sphinx搜索索引器在我的一个myisam表上锁定了60多秒,这似乎使update语句等待释放锁,这反过来又使其他查询等待update语句完成。索引器使用mysql\u-use\u-result,并在调用mysql\u-free\u-result之前进行大量的索引工作。这是我对正在发生的事情的最好猜测,但如果你觉得这不对,请让我知道

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


谢谢

mysql查询似乎总是对myisam表进行读取锁定

我的问题的解决方案是在my.cnf的[mysqld]部分将低优先级更新设置为1

我仍然想知道是否有一种方法可以在mysql中进行查询而不需要读取锁,但我将用一个更好的标题来回答另一个问题


谢谢

mysql查询似乎总是对myisam表进行读取锁定

我的问题的解决方案是在my.cnf的[mysqld]部分将低优先级更新设置为1

我仍然想知道是否有一种方法可以在mysql中进行查询而不需要读取锁,但我将用一个更好的标题来回答另一个问题


谢谢

我想我已经找到了一个潜在的解决方案,那就是“将全局变量设置为低优先级更新=1”。这将导致select查询不必等待update语句。隔离级别对myisam表不是很有意义,如果您需要事务支持,请使用innodb。它似乎已经解决了我的问题。下面是一篇描述一般问题和解决方案的好文章:如果我愿意接受索引场景中的不一致性,我仍然想知道为什么不可能执行忽略锁定的查询。否:我不需要事务支持——我只是想让查询忽略所有锁和不阻止并发写入。我想我已经找到了一个潜在的解决方案,即“将全局变量设置为低优先级更新=1”。这将导致select查询不必等待update语句。隔离级别对myisam表不是很有意义,如果您需要事务支持,请使用innodb。它似乎已经解决了我的问题。下面是一篇描述一般问题和解决方案的好文章:如果我愿意接受索引场景中的不一致性,我仍然想知道为什么不可能执行忽略锁定的查询。否:我不需要事务支持——我只是想让查询忽略所有锁和不阻止并发写入。