Spec-Zone.ru › MySQL 5.7

A.15 MySQL 5.7 FAQ: Пул потоков MySQL Enterprise

A.15.1. Что такое пул потоков и какую проблему он решает?
A.15.2. Как пул потоков ограничивает и управляет одновременными сессиями и транзакциями для оптимальной производительности и пропускной способности?
A.15.3. Чем пул потоков отличается от пула подключений на стороне клиента?
A.15.4. Когда следует использовать пул потоков?
A.15.5. Существуют ли рекомендуемые конфигурации пула потоков?

A.15.1.

Что такое пул потоков и какую проблему он решает?

Пул потоков MySQL — это плагин сервера MySQL, который расширяет стандартные возможности обработки подключений сервера MySQL для ограничения числа одновременно выполняемых операторов/запросов и транзакций, чтобы гарантировать, что каждый из них имеет достаточные ресурсы процессора и памяти для выполнения своей задачи. Для MySQL 5.7 плагин пула потоков включен в MySQL Enterprise Edition, коммерческом продукте.

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

Дополнительную информацию см. в Разделе 5.5.3, «Пул потоков MySQL Enterprise».

A.15.2.

Как пул потоков ограничивает и управляет одновременными сессиями и транзакциями для оптимальной производительности и пропускной способности?

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

Дополнительную информацию см. в Разделе 5.5.3.3, «Работа пула потоков».

A.15.3.

Чем пул потоков отличается от пула подключений на стороне клиента?

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

Пул подключений MySQL с помощью MySQL-соединителей описан в Главе 27, Connectors and APIs.

A.15.4.

Когда следует использовать пул потоков?

Существует несколько общих правил для оптимального использования пула потоков:

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

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

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

Для получения дополнительной информации см. Раздел 5.5.3.4, «Настройка пула потоков».

A.15.5.

Существуют ли рекомендуемые конфигурации пула потоков?

Пул потоков имеет ряд параметров конфигурации, основанных на конкретных случаях использования, которые влияют на его производительность. Для получения дополнительной информации и советов по настройке см. Раздел 5.5.3.4, «Настройка пула потоков».

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/faqs-thread-pool.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API