在长INSERT期间对MyISAM表的读访问?

时间:2010-01-29 17:30:52

标签: sql mysql database locking

在mysql上并且只使用myisam表,我需要在长时间运行的INSERT过程中访问表的内容。

有没有办法阻止INSERT以保持并发SELECT运行的方式锁定表?

This正是我的目的:检查到目前为止已插入了多少条记录。不幸的是,WITH(NOLOCK)在mysql上不起作用,我只能找到控制事务锁的命令(例如,将事务隔离级别设置为READ UNCOMMITTED) - 根据我的理解,这不应用于myisam表因为他们首先不支持交易。

1 个答案:

答案 0 :(得分:1)

MyISAM锁定将阻止选择。有没有理由在InnoDB上面使用MyISAM?如果您不想更改引擎,我怀疑这可能是您的解决方案:

1:使用应用程序可以无阻塞地查询的cron作业(或其他计划任务)创建表的物化视图。

2:使用触发器计算已发生的插入次数,并使用此元数据表查找插入次数。