Важность оперативной памяти является установленным фактом, но доступно гораздо меньше материалов о важности ядер и многопоточности, когда речь заходит об использовании процессора MySQL. Я говорю о разнице запуска MySQL на 4cores против 6cores против 8cores и так далее.
Разные механизмы хранения используют ЦП по-разному?
mysql
performance
Рик Джеймс
источник
источник
Ответы:
Когда дело доходит до MySQL, нет никакого сравнения между механизмами хранения, за исключением того, что это подразделяется на две основные категории:
MySQL использует несколько механизмов хранения
Что касается перечисленных механизмов хранения, единственными, которые соответствуют ACID, являются InnoDB и NDB. Почему это важно упомянуть? Две причины:
InnoDB под MySQL 5.5, плагин InnoDB) и XtraDB Percona Server имеют параметры, которые вы можете установить для доступа к нескольким ядрам (Percona Server делает это дольше). Фактически, Percona внедряет около 30 000 строк кода специально для повышения производительности InnoDB с каждым новым выпуском GA исходного кода MySQL. Мы можем быть уверены, что Oracle включил свои собственные усовершенствования из собственного аналитического центра для работы в InnoDB для многоядерной работы (начиная с MySQL 5.1.38).
При необходимости выполнения MVCC для данных в сочетании с блокировкой строк / страниц теперь можно измерять и настраивать производительность транзакций.
Если есть одна вещь, которую я узнал об использовании нескольких ядер, это то, что вы должны эффективно настраивать InnoDB, а не просто полагаться на InnoDB из коробки .
ОБНОВЛЕНИЕ 2011-09-20 08:03 ПО ВОСТОЧНОМУ ВРЕМЕНИ
Что касается того, как InnoDB извлекает выгоду из всех ядер, нам нужно держать вещи в перспективе. Ядра также должны заниматься другими вопросами (ОС, диск, память, приложения, мониторинг и т. Д.) На сервере базы данных. Для тех, у кого скромный бюджет, многие, как правило, имеют сервер баз данных, который также предоставляет NFS, мониторинг от Munin, поддержку приложений для JBoss, PHP и так далее. Если вы хотите, чтобы MySQL, точнее InnoDB, использовал больше ядер, сервер баз данных должен быть выделен исключительно для MySQL, а ОС / диск / память должны ориентироваться только на MySQL . Учитывая эту перспективу, InnoDB задействует больше ядер, не сомневаясь .
Что касается плагина InnoDB, было упомянуто просто показать более ранние инициативы по созданию лучшего InnoDB со стороны MySQL (например, Oracle. Извините, язык пока еще не скатился). Новые переменные для вызова большей активности ядра стали очевидны из MySQL 5.1.38.
Например, innodb_read_io_threads и innodb_write_io_threads (оба начиная с MySQL 5.1.38) выделяют указанное количество потоков для чтения и записи. По умолчанию установлено значение 4, а максимальное значение равно 64. Значения по умолчанию и максимальные параметры, которые так различаются (4 - 64), показывают, что InnoDB является настолько многопоточным и требует интенсивного использования ядра, как вы его настраиваете !!!
Percona руководил удовлетворением потребностей сообщества MySQL для доступа к большему количеству ядер с помощью InnoDB. Следовательно, MySQL начал следовать его примеру. Я должен признать, что Oracle (гадость) сделал необходимые улучшения для большей основной деятельности.
источник
Я считаю, что разговоры о механизмах хранения, использующих ядра, могут вводить в заблуждение новичков. При условии, что программа достаточно многопоточная, операционная система будет планировать ее на максимально возможном количестве ядер.
Конкретная проблема, которая ограничивает масштабирование процессора, заключается в том, что внутренний код блокировки ( мьютексы ) конфликтует и блокирует одновременную работу потоков. Все механизмы хранения требуют мьютексов, но в MyISAM наверняка есть некоторые горячие.
Если мы на секунду проигнорируем конфликт мьютексов и вернемся к вашему главному вопросу: насколько важно иметь много ядер? -
Мне нравится иметь много ядер для рабочих нагрузок, которые обслуживают запросы пользователей. Наличие множества может уменьшить разницу между временем запроса. Думайте об этом как о том, как выстроиться в очередь на супермаркете с 12 открытыми проходами против 2.
Обновление : я написал сообщение в блоге о том, почему вертикальная масштабируемость (многоядерные) важна.
источник