[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 это необычно -)
лучше всего взять тестовую базу и проверить тестовыми запросами\вставками
понятно, что для тестов нужно будет соответстно настроить параметры - кэши всякие.
я заранее ставлю на 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.
concurrent_inserts позволяет не лочить таблицу *на чтение* во время insert'ов, а десятки параллельных вставок у тебя все равно на myisam'е сделать не получится.
С другой стороны myisam сам по себе быстрее и легче по объему на диске.
В любом случае для быстрой записи намного важнее будут оптимизации в направлении:
во-первых, prepared query,
и главное во-вторых, insert'ы с множеством строк одновременно, если такая возможность есть. Впрочем, тогда и insert'ы лучше бы расположить ну максимум в 4 треда, а не в 10. У innodb тоже масштабируемость не бесконечная.
В целом InnoDB наверное лучше подойдет. Хотя если у тебя всего по 10 строк в секунду, можно сильно не париться.
Еще можно подумать о том, как вычищать старые логи или ротировать таблицы в базе. (двойной атомарный rename table обычно помогает). Ну это начиная с объемов в миллион - 10 миллионов строк.
С другой стороны myisam сам по себе быстрее и легче по объему на диске.
В любом случае для быстрой записи намного важнее будут оптимизации в направлении:
во-первых, prepared query,
и главное во-вторых, insert'ы с множеством строк одновременно, если такая возможность есть. Впрочем, тогда и insert'ы лучше бы расположить ну максимум в 4 треда, а не в 10. У innodb тоже масштабируемость не бесконечная.
В целом InnoDB наверное лучше подойдет. Хотя если у тебя всего по 10 строк в секунду, можно сильно не париться.
Еще можно подумать о том, как вычищать старые логи или ротировать таблицы в базе. (двойной атомарный rename table обычно помогает). Ну это начиная с объемов в миллион - 10 миллионов строк.
Спасибо за ссылки. Жалко про вставки ничего особо нет, только селекты.
Протестировать пока не на чем.
Я тоже склоняюсь к InnoDB. Но на соседнем проекте логи в MyISAM хранятся, почему - объяснить затруднились.
Протестировать пока не на чем.
Я тоже склоняюсь к InnoDB. Но на соседнем проекте логи в MyISAM хранятся, почему - объяснить затруднились.
ЗЫ хм, INSERTs/SELECTs > 10*60/2 это необычно -)Это ж логи. Писаться должны всегда, а предоставляться только при возникновении претензий.
Хм. Понятно. Значит все таки InnoDB.
Вставок не 10 в секунду, а скорее 30-50. Insert`ы объединять не получится.
С ротированием все просто. Таблицы на каждый день свои. )
Вставок не 10 в секунду, а скорее 30-50. Insert`ы объединять не получится.
С ротированием все просто. Таблицы на каждый день свои. )
Ага. Ну кажется среднее железо должно столько вытянуть (сколько там, 3-4 миллиона к концу дня?)
innodb_flush_log_at_trx_commit=2 не забудь поставить, главное. Сильно поможет
innodb_flush_log_at_trx_commit=2 не забудь поставить, главное. Сильно поможет

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