Spec-Zone.ru › MySQL 9.2

A.15 MySQL 9.2 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 9.2 плагин пула потоков включён в MySQL Enterprise Edition, коммерческом продукте.

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

Более подробную информацию можно найти в разделе 7.6.3, «MySQL Enterprise Thread Pool».

A.15.2.

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

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

Более подробную информацию можно найти в разделе 7.6.3.3, «Работа пула потоков».

A.15.3.

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

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

Пул соединений MySQL через MySQL-соединители описан в главе 31, «Соединители и API».

A.15.4.

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

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

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

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

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

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

A.15.5.

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

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

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

Spec-Zone.ru

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