TencentDB for MySQLのデータベースプロキシが接続プール機能をサポートするようになりました。現在サポートしているデータベースプロキシ接続プール機能は、セッションレベル接続プールであり、ショートコネクショントランザクションが新しい接続を頻繁に確立することによるインスタンスの高負荷を解決できます。ここでは、セッションレベル接続プールの機能をご紹介します。
前提条件
背景情報
セッションレベル接続プール
セッションレベル接続プールはショートコネクションの運用シーンに適します。
セッションレベル接続プールは主に、ショートコネクショントランザクションが新しい接続を頻繁に確立することによるインスタンスの高負荷を減らすことに使用されます。あるクライアントから接続が切断された際、システムは現在の接続がアイドル接続かを判断します。アイドル接続と判断した場合、システムはこの接続をプロキシの接続プールにおいて一定時間を保持します。
クライアントが新しい接続を再確立しようとするとき、接続プールに使用可能な接続があれば、その接続を直接使用します。これにより、データベースとの接続確立のオーバーヘッドを減らします。接続プールに使用可能なアイドル接続がなければ、一般的な接続プロセスどおりに、データベースとの新しい接続を確立します。
説明:
セッションレベル接続プールは、データベースの同時接続数を削減することができず、アプリケーションとデータベース間の接続を確立するレートを減らすことでMySQL メインスレッドのオーバーヘッドを低減し、トランザクションリクエストをよりよく処理します。ただし、接続プールにおけるアイドル接続は一時的に接続数を占有します。
セッション接続プールは、大量なスローSQLによる接続溜まりの問題を解決できないため、先にスローSQLの問題を解決する必要があります。
注意事項
現在、接続プールは、同一アカウントがIPごとに異なる権限を持つことをサポートしません。これは、接続を再利用する時、権限が間違った可能性があるためです。例えば、mt@test123にdatabase_aの権限が設定されているが、mt@test456にはdatabase_aの権限が設定されていないとすれば、接続プールを有効にすると、権限エラーが発生する可能性があります。
接続プール機能は、データベースプロキシの接続プール機能を指し、クライアントの接続プール機能に影響しません。クライアントがすでに接続プールをサポートしている場合、データベースプロキシの接続プール機能を使用する必要はありません。