Убедитесь, что INSERT одновременны для конкретной таблицы MyISAM?

У меня есть таблица MyISAM, которая в основном содержит журнал. Кластер машин выполняет операции INSERT с одной записью в этой таблице со скоростью максимум 50 в секунду, но та же самая таблица также обрабатывается SELECT из веб-приложения и индексируется с учетом этого. Однако нет ни UPDATE, ни DELETE.

Итак, из того, что я собрал, я должен использовать одновременные вставки. (Правильно?) MyISAM обычно сделает это за меня без дополнительной работы. (Это правильно?)

Но чего я не могу найти, так это способа гарантировать, что данный INSERT обрабатывается одновременно. Я знаю, что могу установить глобальную переменную concurrent_insert в 2, но я бы не хотел устанавливать это глобально.

Итак, мои вопросы:

  • Есть ли какой-то способ, которым мне не хватает, чтобы гарантировать одновременную вставку?

  • Если нет, есть ли команда, которую я могу использовать, чтобы увидеть, соответствует ли таблица требованиям одновременной вставки? (Я считаю, что просто знать, есть ли в столе отверстия, должно быть достаточно?) Потому что я также соглашусь на возможность просто следить за столом.

  • И мне также любопытно, есть ли какая-нибудь другая система баз данных, которая лучше справляется с такой нагрузкой? Я полностью согласен с решением NoSQL, если это так. Пока я могу говорить с ним из Ruby и C.


person Stéphan Kochen    schedule 09.07.2010    source источник


Ответы (1)


Почему вы не хотите глобально устанавливать concurrent_insert=2? Это дало бы вам то, что вы хотите.

Другим вариантом, который вы можете рассмотреть для этого типа таблицы MyISAM, является INSERT DELAYED: http://dev.mysql.com/doc/refman/5.1/en/insert-delayed.html

person Ike Walker    schedule 09.07.2010
comment
Есть и другие базы данных и таблицы, для которых я считаю это нежелательным. Однако мне нравится указатель DELAYED. Спасибо! - person Stéphan Kochen; 09.07.2010