Håkon Nessjøen writes:
MySQL only supports locks on rows with the InnoDB engine. But as far as I know, when installing the mysql tables with kamdbctl, the tables are added with the MyISAM engine.
MyISAM should not be hard coded in the mysql scripts. there should be a variable in the beginning of the scripts that tells what engine to use in the same way there are variables for db users/passwords.
So, should I start modifying the install scripts so that we use InnoDB engine, or is a table-lock sufficient when myisam is used? Mysql will not give an error if the engine does not support locking on individual rows. So the experience will be transparent for the end user, except for the locking of the whole table.
it is enough if the issue is described in the README of the modules affected, i.e., a note that tells to use InnoDB engine in order to get locking benefits when db is MySQL.
Also, it is important that the columns that the query compares against, is indexes, or else the table will be locked even if the table engine is InnoDB. I'm not sure if presence only queries for indexed columns?
if some indexes are missing, they should be added.
-- juha