自動的にコミットされないトランザクションにカプセル化された多数のリクエストにより、プライマリApsaraDB RDS for PostgreSQLインスタンスの負荷が高い場合、プライマリRDSインスタンスのデータベースプロキシ機能を有効にできます。 この機能は、トランザクション分割機能を提供し、読み取り /書き込みの一貫性を確保し、トランザクションの書き込み操作の前に読み取り要求を読み取り専用RDSインスタンスに転送します。 これにより、プライマリRDSインスタンスの負荷が軽減されます。
前提条件
データベースプロキシ機能が有効になっています。 詳細については、「データベースプロキシ機能の有効化」をご参照ください。
機能の説明
ApsaraDB RDS for PostgreSQLのデータベースプロキシ機能は、トランザクション内のすべてのリクエストをプライマリRDSインスタンスに自動的に送信し、トランザクション内の読み取り /書き込みの一貫性を確保します。 場合によっては、すべての要求は、自動的にコミットされないトランザクションにカプセル化されます。 その結果、プライマリRDSインスタンスの負荷は大きくなりますが、読み取り専用RDSインスタンスの負荷は小さくなります。
上記の問題を解決するには、データベースプロキシ機能のトランザクション分割機能を使用します。 トランザクション分割機能は、アプリケーションのコードや構成を変更することなく、トランザクション内の読み取り要求をプライマリRDSインスタンスから読み取り専用RDSインスタンスにオフロードします。 これにより、プライマリRDSインスタンスの安定性が向上します。
データベースプロキシ機能を有効にすると、トランザクション分割が自動的に有効になります。 この場合、デフォルトの分離レベルREAD COMMITTEDが使用され、トランザクションの自動コミットモードが無効になっている場合、システムは書き込み操作のためだけにトランザクションを開始します。 さらに、トランザクションが開始される前に、システムはロードバランサーを使用してすべての読み取り要求を読み取り専用RDSインスタンスにルーティングします。
データベースプロキシ機能のトランザクション分割は自動的に有効になります。 トランザクション分割を無効にすることはできません。
明示的なトランザクションは分割できません。 明示的なトランザクションには、
BEGIN
またはSTART TRANSACTION
ステートメントを実行することによって開始されるトランザクションが含まれます。トランザクション分割を有効にすると、グローバルな一貫性を確保できません。 データベースプロキシ機能を有効にする前に、トランザクション分割がワークロードに適していることを確認してください。
関連操作
操作 | 説明 |
データベースプロキシの詳細を照会します。 | |
データベースプロキシエンドポイントに関する情報を照会します。 |