开发者

read-access to a MyISAM table during a long INSERT?

开发者 https://www.devze.com 2022-12-18 17:32 出处:网络
On mysql and using only myisam tables, I need to access the contents of a table during the course of a long-running INSERT.

On mysql and using only myisam tables, I need to access the contents of a table during the course of a long-running INSERT.

Is there a way to prevent the INSERT from locking the tabl开发者_如何学Pythone in a way that keeps a concurrent SELECT from running?

This is what I am driving at: to inspect how many records have been inserted up to now. Unfortunately WITH (NOLOCK) does not work on mysql and I could only find commands that control the transaction locks (eg, setting the transaction isolation level to READ UNCOMMITTED) -- which, from my understanding, should not apply to myisam tables at all since they don't support transactions in the first place.


MyISAM locking will block selects. Is there a reason for using MyISAM above InnoDB? If you don't want to change your engine, I suspect this might be a solution for you:

1: Create a materialized view of the table using a cron job (or other scheduled task) that your application can query without blocking.

2: Use a trigger to count up the number of inserts that have occurred, and look up the number of inserts using this meta-data table.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号