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