Как оптимизировать производительность MySQL InnoDB (вставка)? - PullRequest
7 голосов
/ 28 сентября 2011

Я все еще борюсь с производительностью моей базы данных MySQL, используя движок InnoDB. Особенно производительность вставки данных, незначительная производительность выполнения запросов.

Я искал информацию, инструкции и так далее, но большинство информации я нашел довольно глубоким. Могу ли я найти где-нибудь в сети некоторую базовую информацию для «новичков», отправную точку для оптимизации производительности? Первые, большинство шагов импорта для оптимизации InnoDB, объяснены менее сложным способом.

Я использую платформу Windows

Ответы [ 4 ]

15 голосов
/ 30 сентября 2011

Раньше я управлял парой очень больших баз данных MySQL (например, 1 ТБ +). Это были огромные, неумолимые звери с бесконечным аппетитом, которые вызывали у меня проблемы с желудком.

Я прочитал все, что мог найти в MySQL Performance Tuning и innodb. Вот краткое изложение того, что мне помогло:

  1. Книга Высокая производительность MySQL хороша, но только доходит до вас.
  2. Блог MySQL Performance Blog (эта ссылка на их посты с тегом 'innodb') был самым полезным ресурсом, который я нашел в сети. Они подробно рассказывают о многих вопросах настройки innodb. Время от времени он получает "разглагольствования", но в целом это здорово. Вот еще одна ссылка на Основы оптимизации производительности InnoDB , это хорошо.
  3. Последнее, что я сделал, чтобы узнать, это просто читать сами документы MySQL. Я прочитал, как работает каждый последний параметр, изменил их на моем сервере, а затем провел базовое профилирование. Через некоторое время вы выясните, что работает, запустив большие запросы и посмотрев, что произойдет. Вот хорошее место для начала: Настройка производительности InnoDB и устранение неполадок

В конце концов, это просто экспериментирование и работа над вещами, пока вы не получите достаточно знаний, чтобы знать, что работает.

4 голосов
/ 09 октября 2011

Для новичков: innodb_flush_log_at_trx_commit = 0, если вы можете позволить себе потерять до 1 секунды своей работы в случае сбоя сервера.Это компромисс между производительностью и надежностью, но он значительно улучшит производительность записи.Если вы можете позволить себе кэш-память с резервным питанием от батареи, используйте его.

Специально для Windows и для производительности записи лучше использовать MariaDB 5.3, чем стандартный MySQL из Oracle, поскольку MariaDB может лучше использовать асинхронный ввод-вывод приОкна.Я написал заметку об этом некоторое время назад здесь , на стандартном синтетическом бенчмарке он работает на 500% лучше, чем стандартный MySQL 5.5 (см. Рисунки в конце заметки).

ОднакоПервое и главное, что убивает производительность - это очистка диска.Это решаемо, если вы ослабляете долговечность с помощью параметра * innodb_flush_log_at_trx_commit * или кэша записи с резервным питанием от батареи.Также вы можете рассмотреть возможность использования более крупных транзакций, так как они уменьшают количество сбросов диска.

1 голос
/ 30 сентября 2011

Попробуйте скрипт MySQL Primer: http://day32.com/MySQL/

0 голосов
/ 28 сентября 2011

Я не пользовался сетью, я пользовался книгами.:)

Книга, которую я использовал для изучения MySQL, - «Начало MySQL» от Wrox Press, написанная Робертом Шелдоном и Джеффом Моесом.Глава 15 посвящена некоторым основам оптимизации.Мне очень понравилась эта книга, и я думаю, что это было бы хорошим чтением, и это был мой номер 1.Но это не очень специфично для механизма хранения.

У меня есть другая книга, Pro MySQL от apress, в которой более подробно рассказывается о конкретных механизмах хранения, но ее также гораздо сложнее читать.Тем не менее, хороший справочник.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...