プライマリ ApsaraDB RDS for MySQL インスタンスのデータベースプロキシ機能は、トランザクション分割をサポートしています。トランザクション分割を使用すると、読み取り/書き込みの一貫性を確保し、トランザクション内の最初の書き込み操作より前の読み取りリクエストを読み取り専用 RDS インスタンスに転送できます。これにより、プライマリ RDS インスタンスの負荷が軽減されます。このトピックでは、トランザクション分割を有効化および無効化する方法について説明します。
前提条件
データベースプロキシ機能が有効になっていること。詳細については、「データベースプロキシ機能を有効にする」をご参照ください。
背景情報
ApsaraDB RDS for MySQL のデータベースプロキシ機能は、トランザクションの精度を確保するために、トランザクション内のすべてのリクエストをプライマリ RDS インスタンスに自動的に送信します。場合によっては、すべてのリクエストが自動的にコミットされないトランザクションにカプセル化されます。set autocommit=0; 文を実行して、自動コミットモードを無効にすることができます。その結果、プライマリ RDS インスタンスの負荷が高くなります。

上記の問題を解決するには、データベースプロキシ機能のトランザクション分割機能を使用できます。トランザクション分割機能は自動的に有効になり、アプリケーションコードや構成を変更することなく、トランザクション内の読み取りリクエストをプライマリ RDS インスタンスから読み取り専用 RDS インスタンスにオフロードします。これにより、プライマリ RDS インスタンスの安定性が向上します。
トランザクション分割が有効になっている場合、デフォルトの分離レベル READ COMMITTED が使用され、トランザクションの自動コミットモードが無効になっていると、システムは書き込み操作に対してのみトランザクションを開始します。さらに、トランザクションが開始される前に、システムはロードバランサーを使用してすべての読み取りリクエストを読み取り専用 RDS インスタンスにルーティングします。
RDS インスタンスが 2024 年 7 月 31 日以降に作成された場合、BEGIN TRANSACTION または START TRANSACTION 文を実行することで開始されるトランザクションを含む、明示的なトランザクションを分割できます。RDS インスタンスが 2024 年 7 月 31 日より前に作成された場合は、暗黙的に開始されたトランザクションのみを分割できます。
次の表は、自動コミットが無効になっていて、トランザクションが暗黙的に開始されるシナリオでの転送ロジックを示しています。
SQL 文 | 転送先 | 備考 |
SELECT | 読み取り専用 RDS インスタンス | トランザクション内の最初の書き込みリクエストより前の読み取りリクエスト |
SELECT | 読み取り専用 RDS インスタンス | トランザクション内の最初の書き込みリクエストより前の読み取りリクエスト |
UPDATE、INSERT、および DELETE | プライマリ RDS インスタンス | トランザクション開始後のトランザクション内の最初の書き込みリクエスト |
SELECT | プライマリ RDS インスタンス | トランザクション内の最初の書き込みリクエストより後の読み取りリクエスト |
UPDATE、INSERT、および DELETE | プライマリ RDS インスタンス | 書き込みリクエスト |
SELECT | プライマリ RDS インスタンス | トランザクション内の最初の書き込みリクエストより後の読み取りリクエスト |
COMMIT | プライマリ RDS インスタンス | トランザクションのコミットフェーズ |
手順
ビジネス要件に基づいて、トランザクション分割機能を有効または無効にすることができます。
トランザクション分割が有効になっている場合、グローバル整合性を確保できません。データベースプロキシ機能を有効にする前に、トランザクション分割がワークロードに適していることを確認してください。
[インスタンス] ページに移動します。上部のナビゲーションバーで、RDS インスタンスが存在するリージョンを選択します。次に、RDS インスタンスを見つけて、インスタンスの ID をクリックします。
左側のナビゲーションウィンドウで、データベースプロキシ をクリックします。
[接続情報] セクションで、変更するデータベースプロキシエンドポイントを見つけ、[操作] 列の [構成の変更] をクリックします。
表示されるダイアログボックスで、[トランザクション分割] の横にある [有効化] または [無効化] をクリックします。
説明トランザクション分割を有効または無効にした後、新しい設定は新しい接続にのみ適用されます。
関連操作
操作 | 説明 |
データベースプロキシの詳細をクエリします。 | |
データベースプロキシエンドポイントに関する情報をクエリします。 | |
データベースプロキシエンドポイントの設定を変更します。 |