Многоядерные процессоры и производительность MySQL

Важность ОЗУ - это установленный факт, но гораздо меньше материала о важности ядер и многопоточности, когда речь заходит о использовании процессора MySQL. Я говорю о разности работы MySQL на 4cores vs 6cores vs 8cores и т. Д.

Разные системы хранения используют процессор по-разному?

37 голосов | спросил Rick James 18 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowSun, 18 Sep 2011 18:38:17 +0400 2011, 18:38:17

2 ответа


29

Когда дело доходит до MySQL, сравнение между системами хранения отсутствует, за исключением того, что оно относится к двум основным категориям:

В MySQL реализовано использование нескольких механизмов хранения

Что касается перечисленных выше систем хранения, единственными, у которых есть соответствие ACID, являются InnoDB и NDB. Почему это importatnt, чтобы упомянуть? Две причины:

  • Другим механизмам хранения просто не помогает наличие большего количества ядер, кроме базовых операций ввода-вывода, использования ЦП и общей пропускной способности.
  • Код для каждого механизма транзакций без транзакций, который диктует в основном 14 внутренних операций, независимо от механизма хранения, не предназначен для использования доступа нескольких ядер.

InnoDB под MySQL 5.5, плагин InnoDB) и Perlon Server XtraDB имеют параметры, которые вы можете установить для доступа к нескольким ядрам (Percona Server делает это дольше). На самом деле Percona вводит около 30 000 строк кода специально для повышения производительности InnoDB с каждой новой версией исходного кода MySQL. Мы можем быть уверены, что Oracle включила собственные усовершенствования из собственного мозгового центра для работы в InnoDB для многоядерной операции (с MySQL 5.1.38).

С необходимостью выполнять MVCC данные вместе с блокировкой строк /страниц, транзакцией теперь можно измерить, измерить и настроить производительность.

Если я узнал об использовании нескольких ядер, это означает, что вы должны настроить InnoDB эффективно, а не просто полагаться на InnoDB из коробки .

ОБНОВЛЕНИЕ 2011-09-20 08:03 EDT

Что касается InnoDB, использующего все ядра, нам нужно держать вещи в перцептивном. Ядра также должны иметь отношение к другим вопросам (ОС, диск, память, приложения, мониторинг и т. Д.) На сервере базы данных. Для тех, кто имеет скромные бюджеты, многие, как правило, имеют сервер баз данных, также предоставляют NFS, мониторинг от Munin, поддержку приложений для JBoss, PHP, и этот список продолжается. Если вы хотите, чтобы MySQL, в частности InnoDB, использовал больше ядер, Сервер баз данных должен быть выделен исключительно для MySQL, а OS /Disk /Memory должен иметь тенденцию к MySQL только . Учитывая эту перспективу, InnoDB будет задействовать больше ядер с сомнением .

Что касается плагина InnoDB, то было сказано просто показать более ранние инициативы, чтобы иметь лучшую версию InnoDB со стороны MySQL (eh, Oracle. Извините, пока еще не откатывается от языка). Новые переменные для вызова большего количестваОсновная деятельность стала очевидной из MySQL 5.1.38.

Например, innodb_read_io_threads и innodb_write_io_threads (оба с MySQL 5.1.38 ) выделяет указанное количество потоков для чтения и записи. Значение по умолчанию - 4, а максимальное - 64. По умолчанию и максимальные настройки, которые отличаются друг от друга (4 - 64), показывают, что InnoDB является многопоточным и интенсивным, когда вы его настраиваете !!!

Удовлетворение потребностей сообщества MySQL в доступе к большему количеству ядер с InnoDB было заложено Percona. Следовательно, MySQL начал следовать этому примеру. Я должен признать, что Oracle (yuck) сделал необходимые улучшения для большей активности.

ответил RolandoMySQLDBA 20 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowTue, 20 Sep 2011 08:50:05 +0400 2011, 08:50:05
9

Я нахожу, что говорящие о механизмах хранения с использованием ядра могут вводить в заблуждение для новичков. При условии, что программа достаточно многопоточная, операционная система будет планировать ее как можно больше ядер.

Конкретная проблема, которая ограничивает cpu-масштабирование, заключается в том, что внутренний код блокировки ( мьютексы ) имеют конфликты и блокируют потоки одновременно. Для всех механизмов хранения потребуются мьютексы, но, конечно, в MyISAM есть некоторые горячие.

Если мы проигнорируем утверждение mutex на секунду и вернемся к вашему основному вопросу: насколько важно иметь много ядер? -

Мне нравится иметь много ядер для рабочих нагрузок, которые обслуживают запросы пользователей. Наличие многих может уменьшить дисперсию между запросами. Подумайте об этом, как о том, как выстроиться на супермаркете с 12 проходами, открытыми против всего 2.

Обновление : я написал сообщение в блоге о том, почему важна вертикальная масштабируемость (многоядерные процессоры).

ответил Morgan Tocker 29 SunEurope/Moscow2013-12-29T20:49:31+04:00Europe/Moscow12bEurope/MoscowSun, 29 Dec 2013 20:49:31 +0400 2013, 20:49:31

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132