[MySQL] Вставки в таблицу InnoDB vs MyISAM
лучше всего взять тестовую базу и проверить тестовыми запросами\вставками
понятно, что для тестов нужно будет соответстно настроить параметры - кэши всякие.
я заранее ставлю на innodb
http://www.mysqlperformanceblog.com/2007/01/08/innodb-vs-myi...
http://www.mysqlperformanceblog.com/2007/10/12/myisam-scalab...
ЗЫ хм, INSERTs/SELECTs > 10*60/2 это необычно -)
http://www.mysqlperformanceblog.com/2006/06/13/myisam-concur...
4. if your database is more write that read - then I again don’t think concurrent is important for you - most time tables are in WRITE lock.
5. But better way - test it - for example you can take mysql with patched query log and analyze execution time of queries with concurrent insert = off and on.
4. if your database is more write that read - then I again don’t think concurrent is important for you - most time tables are in WRITE lock.
5. But better way - test it - for example you can take mysql with patched query log and analyze execution time of queries with concurrent insert = off and on.
С другой стороны myisam сам по себе быстрее и легче по объему на диске.
В любом случае для быстрой записи намного важнее будут оптимизации в направлении:
во-первых, prepared query,
и главное во-вторых, insert'ы с множеством строк одновременно, если такая возможность есть. Впрочем, тогда и insert'ы лучше бы расположить ну максимум в 4 треда, а не в 10. У innodb тоже масштабируемость не бесконечная.
В целом InnoDB наверное лучше подойдет. Хотя если у тебя всего по 10 строк в секунду, можно сильно не париться.
Еще можно подумать о том, как вычищать старые логи или ротировать таблицы в базе. (двойной атомарный rename table обычно помогает). Ну это начиная с объемов в миллион - 10 миллионов строк.
Протестировать пока не на чем.

Я тоже склоняюсь к InnoDB. Но на соседнем проекте логи в MyISAM хранятся, почему - объяснить затруднились.

ЗЫ хм, INSERTs/SELECTs > 10*60/2 это необычно -)Это ж логи. Писаться должны всегда, а предоставляться только при возникновении претензий.
Вставок не 10 в секунду, а скорее 30-50. Insert`ы объединять не получится.
С ротированием все просто. Таблицы на каждый день свои. )
innodb_flush_log_at_trx_commit=2 не забудь поставить, главное. Сильно поможет


За параметр спасибо. Для логов действительно мгновенная фиксация на диск при коммите не критична.
Оставить комментарий
sinet
Подскажите какой движок лучше всего использовать для таблицы с логами?От таблицы требуется поддерживать десятки параллельный вставок в секунду и доступ по индексу пару раз в минуту.
Я раньше думал, что MyISAM лочит всю таблицу при изменениях, поэтому этот вариант сразу отпадает,
но наткнулся на параметр concurrent_inserts, который вроде бы это лечит.