По названию: есть ли быстрый список кандидатов для таблиц для переноса в InnoDB? И что должно остаться MyISAM.
Некоторая дополнительная информация
- Сайт имеет довольно большую нагрузку для чтения, но вставляет примерно 10 узлов в час с тегами и тому подобным.
- Мы интенсивно используем CCK (огромное количество нормализованных таблиц в форме
content_field%
). - Мы также используем Views для всех наших блоков и страниц; но многие из них являются кандидатами на замену пользовательскими модулями (чтобы уменьшить количество запросов к базе данных и их интенсивность).
- Все пользователи анонимны; за исключением нескольких зарегистрированных в редакторах и веб-мастерах.
performance
database
Беркеш
источник
источник
Ответы:
Вы должны преобразовать все данные в InnoDB, чтобы предотвратить проблемы с блокировкой таблицы. Однако вот о чем стоит подумать:
ПОЛНАЯ ТЕКСТОВАЯ индексация
В настоящее время только MyISAM поддерживает индексацию FULLTEXT. Индексирование FULLTEXT для InnoDB в настоящее время находится в разработке для MySQL 5.6, но не готово к работе . Если у вас есть какие-либо таблицы Drupal с индексами FULLTEXT, они не могут быть преобразованы в InnoDB в настоящее время.
ОБНОВЛЕНИЕ по индексации FULLTEXT
MySQL 5.6 теперь GA (для производственного использования). Пожалуйста, попробуйте индексирование FULLTEXT в InnoDB.
Чтобы найти те таблицы, которые имеют
FULLTEXT
индекс, выполните этот запрос:Если строки не возвращаются, преобразуйте все таблицы InnoDB в свое удовольствие. Ранее я писал о том, как преобразовать все таблицы MyISAM в InnoDB, используя только mysql .
MySQL Replication
Если у вас среда с интенсивным чтением, чтение может выполняться быстрее в MyISAM, если вы выполните следующие действия:
--skip-innodb
/etc/my.cnf на всех подчиненных устройствах (преобразует таблицы в MyISAM при загрузке данных в подчиненное устройство).ALTER TABLE tblname ROW_FORMAT=FIXED;
ROW_FORMAT=FIXED
на страницах 72,73. Это внутренне преобразует все поля VARCHAR в CHAR. Это увеличит размер таблицы MyISAM, но выполнение SELECT для нее будет намного быстрее. Я могу лично засвидетельствовать это. Однажды у меня был стол, который был 1,9 ГБ. Я изменил формат сALTER TABLE tblname ROW_FORMAT=FIXED
. Таблица закончилась 3,7 ГБ. Скорость SELECTs против него была на 20-25% быстрее без улучшения или изменения чего-либо еще.Единственная головная боль, возникающая при этом, заключается в том, что ваше приложение осознает наличие отдельных ведомых устройств чтения.
Эпилог
Если вы смотрите на другие преимущества каждого механизма хранения, проверьте DBA StackExchange:
Apr 14, 2011
: Каковы основные различия между InnoDB и MyISAM?Sep 20, 2011
: Лучший из MyISAM и InnoDBMay 02, 2012
: Какой движок хранения mysql выбрать?May 03, 2012
: Что быстрее, InnoDB или MyISAM?источник
Поскольку ваш веб-сайт предназначен для чтения, я просто конвертирую все таблицы в InnoDB. После этого вы сможете оптимизировать производительность чтения, правильно определив размер пула буферов InnoDB и кэша запросов. Таким образом, мы выполняем несколько тысяч запросов в секунду на выделенных серверах баз данных в нашей инфраструктуре хостинга Drupal.
источник