如何解决MyISAM:如何选择而不在等待正在运行的DELETE的情况下进行锁定?
| 我有一个表,使用MyISAM引擎记录了3000万条记录。我每隔15分钟就有一次定期的DELETE语句,以清除旧记录中的表。 使用:SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
SELECT * FROM mytable WHERE id=123;
正在运行“从mytable删除...”(需要30到60秒)。
SELECT语句会返回脏记录而不锁定吗?还是会尊重表锁并等待30秒然后返回结果?有没有一种方法可以使MyISAM表在DELETE具有表锁的情况下返回SELECT查询?
谢谢。
解决方法
DELETE语句支持
以下修饰符:
如果您指定LOW_PRIORITY,
服务器延迟执行DELETE
直到没有其他客户正在阅读
从桌子上。这只会影响
仅使用的存储引擎
表级锁定(例如MyISAM,
内存和合并)。
你可以用
DELETE LOW_PRIORITY FROM mytable ......
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。