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

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

最終更新日:Jun 05, 2024

PolarDBはトランザクション分割をサポートしています。 トランザクション分割により、セッション内でデータの一貫性が確保され、PolarDBが読み取り専用ノードに読み取り要求を送信できるようになり、プライマリノードの負荷が軽減されます。

背景情報

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

たとえば、Java database Connectivity (JDBC) ドライバーなどの一部のデータベースクライアントドライバーは、デフォルトですべての要求をトランザクションにカプセル化します。 この場合、アプリケーションからのすべての要求はプライマリノードに送信されます。 これにより、次の図に示すように、プライマリノードの負荷が大きくなり、読み取り専用ノードの負荷が小さくなります。

Transaction splitting unavailable

上記の問題を修正するために、PolarDBは読み取り /書き込みの一貫性を確保するために使用できるトランザクション分割機能を提供します。 この機能は、読み取り専用ノードにトランザクションで読み取り要求を送信することで、プライマリノードの負荷を軽減します。

説明

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

プライマリノードの負荷を軽減するために、PolarProxyは、トランザクションの最初の書き込み要求が読み取り専用ノードに送信される前に受信した読み取り要求を送信します。 トランザクション内のコミットされていないデータは、読み取り専用ノードから照会できません。 トランザクションのデータの一貫性を確保するために、最初の書き込み要求の後に受信されたすべての読み取りおよび書き込み要求は、引き続きプライマリノードに転送されます。 基本的なトランザクション分割を有効にする方法の詳細については、「カスタムクラスターエンドポイントの作成と変更」をご参照ください。

Basic transaction splitting

メリット

この機能を使用すると、アプリケーションコードや構成を変更することなく、プライマリノードから読み取り専用ノードに読み取りロードを転送できます。 これは、プライマリノードをより安定させる。

注意

  • Read Committed分離レベルを使用するトランザクションのみを分割できます。
  • 基本的なトランザクション分割を有効にし、整合性レベルが最終的な整合性に設定されていない場合、プロキシは、読み取り専用ノードがプライマリノードからのすべてのデータを同期した後にのみ、トランザクションの最初の書き込み要求の前に受信した読み取り要求を読み取り専用ノードに送信します。 それ以外の場合、プロキシは引き続き読み取り要求をプライマリノードに送信します。 整合性レベルの詳細については、「」をご参照ください。

関連する API 操作

API説明
ModifyDBClusterEndpointPolarDBクラスターエンドポイントの属性を変更します。 たとえば、読み取り /書き込みモード、整合性レベル、トランザクション分割、プライマリノードからの読み取り要求のオフロードなどの属性を変更できます。 指定したクラスターエンドポイントを新しく追加したノードに関連付けるかどうかも指定できます。