We use InnoDB engine for our mysql database but since the data set is huge we aggregate data in flat myisam table. We have to use myisam because we also utilizing full-text search.
Generally queries against flat table as much faster, but the problem is that we now have to run update script which locks all search queries for long….
I wonder if there is a better way maintaining search table or how to run update script without locking other search queries.
If you can afford the extra space, the simplest option would to be to create the new table under the separate name and then use rename to swap in the new table. Then you can drop the old table.
Alternatively, you might consider something like Sphinx which will index your table for you and provides search APIs for most popular languages.