Пул потоков в MariaDB 5.1 - 5.3
В этой статье описывается старый пул потоков в MariaDB 5.1 - 5.3.
MariaDB 5.5 и более поздние версии используют улучшенный пул потоков - см. Пул потоков в MariaDB.
О пуле потоков
Это расширенная версия кода пула потоков из MySQL 6.0. Это позволяет использовать ограниченный набор потоков для обработки всех запросов вместо старого стиля «один поток на соединение». В последнее время его также называют «пул потоков», так как эта функция (в другой реализации) доступна в корпоративных изданиях MySQL (не в сообществе).
Это может быть очень выгодно, если большинство ваших запросов выполняются быстро, и в вашей системе мало блокировок таблиц/строк.
Инструкции
Для включения пула потоков вы должны сначала запустить конфигурацию с параметром --with-libevent. (Это автоматически выполняется, если вы используете любые скрипты «max» в каталоге BUILD):
./configure --with-libevent
При запуске mysqld с кодом пула потоков вы должны использовать
mysqld --thread-handling=pool-of-threads --thread-pool-size=20
Значения по умолчанию:
thread-handling= one-thread-per-connection thread-pool-size= 20
Одна проблема с пулом потоков заключается в том, что если все рабочие потоки выполняют работу (например, выполняют длительные запросы) или заблокированы блокировкой строки/таблицы, новые подключения не могут быть установлены, и вы не можете войти в систему и узнать, что не так, или войти в систему и убить запросы.
Чтобы помочь с этим, мы ввели два новых параметра для mysqld; extra_port и extra_max_connections:
--extra-port=# (Default 0) --extra-max-connections=# (Default 1)
Если extra-port <> 0, то вы можете подключить максимальное количество обычных потоков + 1 дополнительный суперпользователь через TCP/IP-порт «extra-port». Эти соединения используют старый метод «один поток на соединение».
Для подключения через дополнительный порт используйте:
mysql --port='number-of-extra-port' --protocol=tcp
Это позволяет вам свободно использовать оптимальную модель соединения/потока на основе соединения.
См. также
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/thread-pool-in-mariadb-51-53/