MySQL Router 9.0  /  部署 MySQL Router  /  連線共享與重複使用

3.4 連線共享與重複使用

MySQL Router 啟用伺服器連線的集區和共享。如果用戶端斷開連線,伺服器連線將移至連線集區,以便重複使用。如果用戶端連線閒置時間超過指定的時間,伺服器連線將閒置,直到建立新的用戶端連線。這降低了伺服器必須維護的連線數,並釋放了通常綁定到閒置連線的資源。

MySQL Router 會追蹤用戶端執行的陳述式和會話的 SQL 狀態,以確保用戶端連線不會遺失其會話狀態。如果連線已共享,則重新連線的會話會處於用戶端離開時的狀態。如果無法這樣做,則不會共享連線。

陳述式產生的警告和錯誤會在用戶端請求時擷取並傳回。會話變數也是如此。

注意

預設的 I/O 線程數與主機支援的 CPU 線程數相同,可以使用 threads 組態選項進行設定。

限制

  • PASSTHROUGH 模式或 server-ssl-mode=AS_CLIENTclient-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

  • 使用者變數

  • 暫時表格

  • 預備陳述式

注意

交易和 LOCK TABLES 也會封鎖連線共享,直到交易關閉或鎖定釋放。

組態設定

連線共享使用下列選項進行設定

以下是在引導啟動期間設定連線共享的範例

        --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