MySQL 5.1 - long running select locking the table and not allowing inserts
MYISAM do not provide row-level locking so the whole table become locked on every DML or DDL statement. INNODB allows to lock only rows involved into the query so multiple concurrent queries can be performed. Therefore migration from the MYISAM to INNODB can solve the problem. The other way (not always possible) is to split the table by partitioning. Since mysql v5.7 each query locks only partitions involved while other are still free to be queried.