доступ для чтения к таблице MyISAM во время длинной вставки? - PullRequest
1 голос
/ 29 января 2010

В mysql и при использовании только таблиц myisam мне нужно получить доступ к содержимому таблицы во время длительной операции INSERT.

Есть ли способ предотвратить блокировку таблицы командой INSERT таким образом, чтобы одновременный запуск SELECT не выполнялся?

Это - это то, к чему я клоню: проверить, сколько записей было вставлено до настоящего времени. К сожалению, WITH (NOLOCK) не работает на mysql, и я мог только найти команды, которые управляют блокировками транзакций (например, установив уровень изоляции транзакций на READ UNCOMMITTED ) - что, на мой взгляд, не должно применяться к таблицам myisam вообще, так как они не поддерживают транзакции.

1 Ответ

1 голос
/ 29 января 2010

Блокировка MyISAM заблокирует выбор. Есть ли причина использовать MyISAM выше InnoDB? Если вы не хотите менять свой двигатель, я подозреваю, что это может быть решением для вас:

1: Создайте материализованное представление таблицы, используя задание cron (или другое запланированное задание), которое ваше приложение может запросить без блокировки.

2: Используйте триггер, чтобы подсчитать количество вставок, которые произошли, и найдите количество вставок, используя эту таблицу метаданных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...