Spec-Zone.ru › MySQL 8.4

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

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

Дополнительную информацию см. в разделе 7.6.3, “MySQL Enterprise Thread Pool”.

A.15.2.

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

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

Дополнительную информацию см. в разделе 7.6.3.3, “Thread Pool Operation”.

A.15.3.

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

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

Пул соединений MySQL через MySQL Connectors описан в главе 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-8.4-en/faqs-thread-pool.html

Spec-Zone.ru

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