База данных My MysQL содержит несколько таблиц MyISAM с каждой таблицей, содержащей миллионы строк. Существует тяжелая нагрузка вставки на базу данных, таким образом, я не могу выйти, ВЫБИРАЕТ на той живой базе данных. Вместо этого я создаю копию базы данных для запросов и провожу анализ этого.
Для анализа я должен выпустить несколько параллельных запросов. Запросы независимы (т.е. результаты запросов не объединены вместе), но они воздействуют на те же таблицы большую часть времени. Насколько я знаю, вся таблица MyISAM заблокирована для каждого запроса, что означает, что параллельные независимые запросы были бы медленными. Идеально, я предпочел бы механизм, который не поддерживает "БЛОКИРОВКИ". Я предполагаю, что MySQL не имеет такого механизма, таким образом, я должен использовать InnoDB? Я мог бы пропускать партию вещей здесь. Предложите то, что является правильным путем для взятия здесь.
Спасибо
MyISAM
блокировки чтения совместимы, поэтому запросы SELECT
не будут блокировать друг друга.
Если ваши аналитические запросы к базе данных реплик не пишут, а только читают, тогда можно использовать MyISAM
.
Вы можете использовать MyISAM и использовать INSERT DELAYED
:
Когда клиент использует INSERT DELAYED, он получает разрешение от server сразу, и строка ставится в очередь для вставки, когда таблица не используется никаким другим потоком.
Еще одним важным преимуществом использования INSERT DELAYED является то, что вставки от многих клиентов объединяются вместе и записываются в один блок. Это намного быстрее, чем выполнение множества отдельных вставок.