TDSQL-C for MySQLのデータベースプロキシはコネクションプール機能をサポートしています。現在サポートされているデータベースプロキシのコネクションプール機能はセッションレベルのコネクションプールであり、ショートコネクションのビジネスが頻繁に新しい接続を確立することによって引き起こされるインスタンスの負荷過剰の問題を効果的に解決できます。この記事では、セッションレベルのコネクションプール機能についてご紹介します。
前提条件
背景情報
セッションレベルのコネクションプール
セッションレベルコネクションプールはショートコネクションシナリオに適用されます。 セッションレベルコネクションプールは、主にショートコネクション業務による頻繁な新規接続確立がもたらすインスタンス負荷を軽減するために使用されます。クライアント接続が切断された場合、システムは現在の接続がアイドル接続かどうかを判断し、アイドル接続であれば当該接続をプロキシのコネクションプールに移し、一定時間(デフォルト5秒、接続保留閾値の設定をサポート)保持します。
クライアントが新規接続を再度確立する際、コネクションプールに利用可能な接続があれば直接使用でき、これによりデータベースとの接続確立コストを削減できます。コネクションプール内に利用可能なアイドル接続がない場合は、通常の接続プロセスを実行し、データベースとの新規接続を再確立します。 説明:
セッションレベルコネクションプールはデータベースのコンカレント接続数を削減するものではなく、アプリケーションとデータベース間の接続確立頻度を低減することで、TDSQL-C for MySQLのメインスレッドのオーバーヘッドを削減し、ビジネスリクエストをより効果的に処理します。ただし、コネクションプール内のアイドル接続は一時的に接続数を占有します。
セッションレベルコネクションプールは、大量のスローSQLが存在することによる接続の蓄積問題を解決できません。まずスローSQLの問題を解決する必要があります。
注意事項
現在、コネクションプール機能は同一アカウントが異なるIPに対して異なる権限を持つことをサポートしていません。これにより、接続の再利用時に権限エラーが発生する可能性があります。例えば、mt@test123がdatabase_aの権限を設定している場合、mt@test456にdatabase_aの権限がない場合、コネクションプールを有効にすると権限エラーが発生する可能性があります。
コネクションプール機能とはデータベースプロキシのコネクションプール機能を指し、クライアント側のコネクションプール機能には影響しません。お客様のクライアントが既にコネクションプールをサポートしている場合、データベースプロキシのコネクションプール機能を使用する必要はありません。