Spec-Zone.ru › MySQL Router 8.4

3.4 Обмен и повторное использование подключений

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

MySQL Router отслеживает выполняемые клиентом запросы и состояние SQL сессии, чтобы гарантировать, что клиентские подключения не потеряют состояние сессии. Если подключение делится, подключенная сессия находится в том состоянии, в котором клиент ее оставил. Если это невозможно, подключение не делится.

Предупреждения и ошибки, сгенерированные запросами, захватываются и возвращаются по запросу клиента. Так же, как и переменные сессии.

Примечание

Значение по умолчанию для количества потоков I/O равно количеству потоков CPU, поддерживаемых хостом, и может быть настроено с помощью опции конфигурации threads.

Ограничения

  • Обмен подключениями не поддерживается в режиме PASSTHROUGH или если server-ssl-mode=AS_CLIENT и client-ssl-mode=PREFERRED.

  • Обмен подключениями поддерживается только для классических подключений.

  • SQL-запросы, которые зависят от предыдущего состояния сессии, не будут работать при активном обмене подключениями, если они не находятся внутри транзакции.

  • Некоторые функции оставят подключение в состоянии, которое блокирует его обмен при простоях. Закрытие или сброс подключения (COM_RESET_CONNECTION) позволит подключению быть повторно использовано.

Неподдерживаемые SQL-функции

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

  • GET DIAGNOSTICS

  • LAST_INSERT_ID()

SQL-функции, которые препятствуют обмену

Следующие SQL-функции препятствуют добавлению подключения в пул до тех пор, пока подключение не будет закрыто или сброшено клиентом.

  • SQL_CALC_FOUND_ROWS,

  • GET_LOCK(), service_get_write_locks(). и SQL_CALC_FOUND_ROWS

  • Переменные пользователя

  • Временные таблицы

  • Подготовленные запросы

Примечание

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

Конфигурация

Обмен подключениями настраивается с помощью следующих опций:

  • connection_sharing

  • connection_sharing_delay

  • max_idle_server_connections

  • idle_timeout

Следующий пример демонстрирует настройку обмена подключениями во время запуска:

        --conf-set-option=routing:bootstrap_rw.connection_sharing=1
        --conf-set-option=routing:bootstrap_ro.connection_sharing=1
        --conf-set-option=connection_pool.max_idle_server_connections=32
      

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-router-8.4-en/mysql-router-general-features-connection-sharing.html

Spec-Zone.ru

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