MyISAM:如何在没有锁定等待的情况下使用正在运行的DELETE进行选择?

时间:2011-04-15 23:15:55

标签: mysql optimization myisam

我有一张包含3000万条记录的表,使用MyISAM引擎。我每隔15分钟就会有一次重复的DELETE语句来清理旧记录中的表格。

使用:

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
SELECT * FROM mytable WHERE id=123;

当'删除来自mytable ...'正在运行时(需要30-60秒)。

SELECT语句是否会在没有锁定的情况下返回脏记录?或者是否会尊重表锁并等待30秒然后返回结果?有没有办法让一个MyISAM表返回SELECT查询而DELETE有一个表锁?

感谢。

1 个答案:

答案 0 :(得分:0)

  

DELETE语句支持   以下修饰符:

     

如果指定LOW_PRIORITY,则   服务器延迟执行DELETE   直到没有其他客户正在阅读   从表中。这仅影响   仅使用的存储引擎   表级锁定(例如MyISAM,   MEMORY和MERGE)。

你可以用

DELETE LOW_PRIORITY FROM mytable ......