我有一个mysql数据库,可以从各种资源中收集数据
为了显示来自不同表的一些统计信息,我运行一个长查询,大约需要几分钟才能执行
查询锁定了一些表,因此我无法写入这些表
表是InnoDB引擎。我尝试了几种选择,包括:
1.增加锁定超时
2.添加SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
和COMMIT;
(link)
3.向表中添加索引(使查询运行得更快,但仍然会出现锁定超时错误)
如何在不锁定表的情况下执行长查询?
答案 0 :(得分:1)
来自Any way to select without causing locking in MySQL?中的评论:
设置“设置会话事务隔离级别读取已提交;”没有帮助。
设置“设置会话事务隔离级别读取未提交;”没有帮助。
在任何一方使用锁定表都无济于事。
在my.cnf中设置innodb_locks_unsafe_for_binlog = 1解决了这个问题,但我认为缺点是现在我无法在此数据库中使用复制。
如果你不需要复制,那我就试试。