すべてのプロダクト
Search
ドキュメントセンター

PolarDB:トランザクション分離

最終更新日:Aug 26, 2026

このトピックでは、PolarDB for PostgreSQL クラスターのトランザクション分割機能の仕組みと有効化する方法について説明します。

背景情報

PolarDB for PostgreSQL クラスターのクラスターエンドポイントを読み取り/書き込みモードで使用すると、PolarProxy は読み取りおよび書き込みリクエストをプライマリノードと読み取り専用ノードにルーティングします。セッション内での読み取り/書き込みの整合性を確保するために、PolarProxy は、セッション内のトランザクションに属するすべてのリクエストをプライマリノードに送信します。

例えば、Java Database Connectivity (JDBC) のような一部のデータベースクライアントドライバーは、デフォルトでリクエストをトランザクションでラップします。その結果、次の図に示すように、アプリケーションからのすべてのリクエストがプライマリノードに送信され、プライマリノードに高い負荷がかかる一方で、読み取り専用ノードはほぼアイドル状態のままになります。

No transaction splitting

この問題を解決するため、PolarDB はトランザクション分離機能を提供します。この機能は、読み書き一貫性を確保しながら、トランザクション内の読み取りリクエストを読み取り専用ノードにルーティングすることで、プライマリノードの負荷を軽減します。

機能

基本トランザクション分割サービス

PolarProxy は、トランザクション内の最初の書き込みリクエストより前の読み取りリクエストを読み取り専用ノードにルーティングすることで、プライマリノードの負荷を軽減します。トランザクション内の未コミットデータは読み取り専用ノードでは見えないため、読み取り/書き込みの一貫性を確保するために、最初の書き込みリクエスト以降はすべての読み取りおよび書き込みリクエストがプライマリノードにルーティングされます。基本的なトランザクション分割サービスを有効にする方法の詳細については、「トランザクション分割を有効にする」をご参照ください。

基本的なトランザクションの分割

メリット

アプリケーションコードや設定を変更することなく、トランザクション内の読み取り負荷をプライマリノードから読み取り専用ノードにオフロードすることで、プライマリノードの安定性が向上します。

注意事項

  • トランザクション分離は、Read Committed トランザクション分離レベルでのみサポートされます。

  • 基本的なトランザクション分割サービスでは、一貫性レベルが 最終的な整合性 (弱) に設定されていない場合、トランザクション内の最初の書き込みリクエストより前の読み取りリクエストは、読み取り専用ノード上のデータがプライマリノードと同期された後にのみ、読み取り専用ノードにルーティングされます。それ以外の場合、これらのリクエストは引き続きプライマリノードに送信されます。一貫性レベルの詳細については、「一貫性レベル」をご参照ください。

トランザクション分離の有効化

  1. PolarDB コンソールにログインし、左側のナビゲーションペインで クラスター をクリックします。クラスターがデプロイされているリージョンを選択し、クラスター ID をクリックしてクラスター詳細ページに移動します。

  2. データベースへの接続 セクションで、対象の接続エンドポイントの横にある 設定 をクリックします。

  3. トランザクション分離 をクリックし、次に右側にある オン をクリックします。

    説明

    トランザクション分離を有効にした後、この設定は新しい接続に対してのみ有効になります。既存の接続で変更を有効にするには、接続を再確立する必要があります。

  4. OK をクリックします。

関連操作

API 操作

説明

ModifyDBClusterEndpoint

読み書きモード、新しいノードをエンドポイントに自動的に追加するかどうか、一貫性レベル、トランザクション分割、プライマリノードが読み取りリクエストを受け入れるかどうかなど、PolarDB クラスターエンドポイントの属性を変更します。