«Лучший практика» является:
- Измерять, изолируя соответствующую подсистему, а также вы можете.
- Определите основную причину узкого места. Вы связаны с I/O? ЦП связан? Память связана? Ожидание замков?
- Внесите изменения, чтобы устранить причину, которую вы обнаружили.
- Измерьте снова, чтобы продемонстрировать, что вы зафиксировали узкое место и на сколько.
- Перейдите к шагу 2 и повторите при необходимости, пока система работает достаточно быстро.
Подпишитесь на RSS-канал по номеру http://www.mysqlperformanceblog.com и прочитайте его исторические статьи. Это очень полезный ресурс для мудрости, связанной с производительностью. Например, вы спросили о InnoDB и MyISAM. Их вывод: InnoDB имеет на 30% более высокую производительность, чем MyISAM в среднем. Хотя есть также несколько сценариев использования, в которых MyISAM выдает InnoDB.
Авторы этого блога являются также соавторами "High Performance MySQL" книги, упомянутой Barnett @ Андрей.
Re комментарий от @ ʞɔıu: Как сказать ли вы O оценка I/по сравнению с ЦП по сравнению с памятью, связанной зависит от платформы. Операционная система может предлагать такие инструменты, как ps, iostat, vmstat или top. Или вам может потребоваться сторонний инструмент, если ваша ОС не предоставит его.
В принципе, какой ресурс привязан при 100% использовании/насыщении, вероятно, будет вашим узким местом. Если загрузка вашего процессора низкая, но ваша нагрузка ввода-вывода максимальна для вашего оборудования, то вы привязаны к вводу/выводу.
Это всего лишь один пункт данных. Средство может также зависеть от других факторов. Например, сложный SQL-запрос может выполнять файловое управление, и это заставляет занятые операции ввода-вывода. Должно ли вы бросать на него больше/быстрее оборудования или вы должны перепроектировать запрос, чтобы избежать файлового управления?
Слишком много факторов, которые можно суммировать в сообщении StackOverflow, и тот факт, что многие книги существуют по этому вопросу, поддерживает это.Хранение баз данных, эффективно работающих и наилучшим образом использующих ресурсы, - это работа на полный рабочий день, требующая специальных навыков и постоянного изучения.
Джефф Этвуд просто написал хорошую статью блога о поиске узких мест в системе:
Единственная огромная причина пойти с двигателем INNODB - это поддержка транзакций. MyIsam этого не поддерживает. Если вы заботитесь о своей целостности данных (как и следовало :)), просто нет другого пути.нет способа надежной отката sql-последовательности, если вы не используете транзакции и что-то плохое произошло, как отключение питания. – Stann