Spec-Zone .ru
спецификации, руководства, описания, API
|
Вопросы
B.14.1: Каков Пул потоков и какую проблему он решает?
B.14.2: Как Thead Объединяет предел в пул и управляет параллельными сеансами и транзакциями для оптимальной производительности и пропускной способности?
B.14.3: Как Пул потоков отличается от клиентского Пула Соединения?
B.14.4: Когда я должен использовать Пул потоков?
B.14.5: там рекомендуются конфигурации Пула потоков?
Вопросы и Ответы
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, "Настройка Пула потоков".