Spec-Zone .ru
спецификации, руководства, описания, API

B.14. FAQ MySQL 5.6: Пул потоков Масштабируемости MySQL Enterprise

Вопросы

Вопросы и Ответы

B.14.1: Каков Пул потоков и какую проблему он решает?

MySQL Thread Pool является плагином сервера MySQL, который расширяет возможности обработки соединения значения по умолчанию сервера MySQL ограничить число одновременно выполняющихся операторов/запросов и транзакций, чтобы гарантировать, что у каждого есть достаточный ЦП и ресурсы памяти, чтобы выполнить ее задачу. Коммерческие дистрибутивы MySQL 5.5 и 5.6 включают плагин Пула потоков.

Модель обработки потока значения по умолчанию в MySQL Server выполняет операторы, используя один поток на клиентское соединение. Поскольку больше клиентов соединяется с сервером и выполняет операторы, общая производительность ухудшается. Плагин Пула потоков обеспечивает альтернативную обрабатывающую поток модель, разработанную, чтобы уменьшить издержки и улучшить производительность. Плагин Пула потоков увеличивает производительность сервера, эффективно управляя потоками выполнения оператора для больших количеств клиентских соединений, особенно на современных системах мульти-ЦП/Ядра.

Для получения дополнительной информации см. Раздел 8.11.6, "Плагин Пула потоков".

B.14.2: Как Thead Объединяет предел в пул и управляет параллельными сеансами и транзакциями для оптимальной производительности и пропускной способности?

Пул потоков использует, "делят и завоевывают" подход к ограничению и балансированию параллелизма. В отличие от обработки соединения значения по умолчанию MySQL Server, Пул потоков разделяет соединения и потоки, таким образом нет никакого фиксированного отношения между соединениями и потоками, которые выполняют операторы, полученные от тех соединений. Пул потоков тогда управляет клиентскими соединениями в пределах конфигурируемых групп потока, где они располагаются по приоритетам и ставятся в очередь основанные на природе работы, они были представлены, чтобы выполнить.

Для получения дополнительной информации см. Раздел 8.11.6.2, "Работа Пула потоков".

B.14.3: Как Пул потоков отличается от клиентского Пула Соединения?

MySQL Connection Pool работает на стороне клиента, чтобы гарантировать, что клиент MySQL постоянно не соединяется с и разъединяется от сервера MySQL. Это разрабатывается, чтобы кэшировать неактивные соединения в клиенте MySQL для использования другими пользователями, поскольку они необходимы. Это минимизирует издержки и расход соединений установления и разъединения, поскольку запросы представляются серверу MySQL. У MySQL Connection Pool нет никакой видимости относительно возможностей обработки запроса или загрузки сервера MySQL бэкэнда. В отличие от этого, Пул потоков работает на стороне сервера MySQL и разрабатывается, чтобы управлять выполнением входящих параллельных соединений и запросов, поскольку они получаются от клиентских соединений, получающих доступ к базе данных MySQL бэкэнда. Из-за разделения режимов работы MySQL Connection Pool и Thread Pool является ортогональным и может использоваться независимый друг от друга.

MySQL Connection Pooling через MySQL Connectors охватывается в Главе 22, Соединителях и API.

B.14.4: Когда я должен использовать Пул потоков?

Есть несколько эмпирических правил, чтобы рассмотреть для оптимальных вариантов использования Пула потоков:

MySQL Threads_running переменная отслеживает число параллельных операторов, в настоящий момент выполняющихся в MySQL Server. Если эта переменная последовательно превысит область, где сервер не будет работать оптимально (обычно выход за пределы 40 для рабочих нагрузок InnoDB), то Пул потоков будет выгоден, особенно в экстремальных параллельных ситуациях с перегрузкой.

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

Наконец, если Ваша рабочая нагрузка включит главным образом короткие запросы, то Пул потоков будет выгоден.

Чтобы учиться больше, см. Раздел 8.11.6.3, "Настройка Пула потоков".

B.14.5: там рекомендуются конфигурации Пула потоков?

У Пула потоков есть много пользовательских случаев управляемые параметры конфигурации, которые влияют на его производительность. Чтобы узнать о них и подсказках относительно настройки, см. Раздел 8.11.6.3, "Настройка Пула потоков".