Таблицы MyISAM и InnoDB в одной базе данных - PullRequest
8 голосов
/ 22 января 2010

У меня есть база данных с 30 таблицами, из которых 5 таблиц интенсивно пишут.

Я рассматриваю

  1. Конвертируйте 5 таблиц с интенсивной записью для использования механизма InnoDB и оставьте все остальные на движке MyISAM

  2. Преобразование всех таблиц для использования движка InnoDB.

Интересно, какой подход лучше?

Чтобы быть более конкретным

Причина, по которой я хочу сохранить некоторые таблицы в движке MyISAM, состоит в том, что некоторые из них содержат около 1 000 000 строк. Я не уверен, насколько медленнее будут запросы типа «SELECT COUNT (*)» в этих таблицах после преобразования в InnoDB.

Я не прошел тест. Я предпочитаю получить несколько советов от любого из вас, прежде чем запускать коммутатор.

Ответы [ 2 ]

12 голосов
/ 22 января 2010

В настоящее время я всегда по умолчанию использую InnoDB, особенно в тех таблицах с интенсивной записью, о которых вы упоминаете, где MyISAM страдает от полной блокировки таблиц. Вот точное сравнение.

Причины использования MyISAM:

  • Таблицы очень быстрые для тяжелых нагрузок
  • Блокировки на уровне таблиц ограничивают их масштабируемость для многопользовательских сред с интенсивной записью.
  • Наименьшее потребление дискового пространства
  • Полнотекстовый индекс
  • Объединенные и сжатые таблицы.

Причины использования InnoDB:

  • КИСЛОТНЫЕ транзакции
  • Блокировка уровня строки
  • Согласованное чтение - позволяет достичь превосходного параллелизма чтения и записи.
  • Кластеризация первичного ключа - в некоторых случаях обеспечивает отличную производительность.
  • Поддержка внешнего ключа.
  • Можно кэшировать как страницы индекса, так и страницы данных.
  • Автоматическое восстановление после сбоя - в случае, если завершение работы MySQL было нечистым, таблицы InnoDB по-прежнему будут восстанавливаться до согласованного состояния. Никакой проверки / исправления, как MyISAM, может потребоваться.
  • Все обновления должны проходить через транзакционный механизм в InnoDB, который часто падает - производительность по сравнению с нетранзакционными механизмами хранения.

Вышеупомянутое взято с этого сайта , который, похоже, больше не работает.

2 голосов
/ 22 января 2010

плюсов и минусов для каждого.

для (1) плюсы: меньше места на диске, myisam намного быстрее для шаблонов доступа с интенсивным чтением

cons: память должна быть разделена между буферами innodb и myisam key. Таблицы innodb примерно в 4 раза больше, чем их коллеги из myisam. Программный код должен быть адаптирован для обработки тупиковых ситуаций.

просто помните, что innodb также блокируется, если вы изменяете индексированный столбец или первичный ключ.

...