Таблица Mysql MEMORY против таблицы InnoDB (много вставок, мало чтений) - PullRequest
3 голосов
/ 16 января 2012

Я запускаю все свои сайты на таблицах InnoDB, которые до сих пор работают очень хорошо Теперь мне нравится знать, что происходит в реальном времени на моих сайтах, поэтому я храню каждый просмотр страницы (страницу, реферер, IP, имя хоста и т. Д.) В таблице InnoDB. Приблизительно 100 вставок в секунду, и эта таблица читается только время от времени, когда я просматриваю журналы.

Я очищаю стол каждую минуту с помощью cron, который удаляет старые предметы. В среднем в этой таблице остается около 35 000 строк размером около 5 МБ.

Было бы проще на сервере, если бы я перенес таблицу InnoDB в таблицу MEMORY? Насколько я вижу, это сэкономит много дискового ввода-вывода, верно? Перезапуск Mysql приведет к потере данных, но в моем случае это не имеет значения.

Вопрос: В моем случае, вы бы порекомендовали таблицу памяти поверх таблицы InnoDB?

Ответы [ 2 ]

2 голосов
/ 16 января 2012

Да, я бы.Упомянутые вами условия (много записей, периодическая очистка данных, сохранение данных не требуется) делают его практически идеальным кандидатом на MEMORY.

0 голосов
/ 11 июля 2013

, пожалуйста, оптимизируйте ваши настройки innodb:

Пока вы сконфигурировали InnoDB для использования достаточного количества памяти для хранения всей таблицы (с innodb_buffer_pool_size), и нет чрезмерного давления со стороны других таблиц InnoDB на том же сервере, данные останутся в памяти.Если вас беспокоит производительность записи (и опять запрет на другое использование той же системы), вы можете уменьшить долговечность, чтобы значительно увеличить производительность записи, установив innodb_flush_log_at_trx_commit = 0 и отключив бинарное ведение журнала.

Использование любых триггеров свременные таблицы будут содержать беспорядок и не дадут вам никаких преимуществ транзакционности временных таблиц.

Более подробную информацию вы можете найти здесь: http://dev.mysql.com/doc/refman/4.1/en/innodb-parameters.html#sysvar_innodb_flush_log_at_trx_commit

...