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

ApsaraDB RDS:読み書き分離とは何ですか?

最終更新日:Jan 16, 2024

データベースシステムが多数の読み取り要求を受信し、少数の書き込み要求を受信し、プライマリApsaraDB RDS for PostgreSQLインスタンスが読み取り要求によって過負荷になった場合、読み取り専用RDSインスタンスを使用して、データベースシステムのデータベースプロキシ機能の読み取り /書き込み分割を行うことができます。 データベースシステムは、データベースプロキシエンドポイントを使用して、読み取りおよび書き込み要求を自動的に転送できます。 これにより、読み取り専用RDSインスタンスの読み取りパフォーマンスが最大化され、プライマリRDSインスタンスの負荷が軽減されます。

概要

データベースシステムが多数の読み取りリクエストと少数の書き込みリクエストを受信した場合、プライマリRDSインスタンスが読み取りリクエストを効率的に処理できず、ワークロードが中断される可能性があります。 読み取り専用RDSインスタンスを作成した後、データベースプロキシ機能の読み取り /書き込み分割を使用して、システムが書き込みリクエストをプライマリRDSインスタンスに、読み取りリクエストを読み取り専用RDSインスタンスに自動的に転送できるようにします。 これにより、プライマリRDSインスタンスの負荷を軽減できます。 詳細については、「データベースプロキシとは」をご参照ください。

image

読み書き分離の利点

  • メンテナンスを容易にするための統合された読み書き分離エンドポイント

    読み書き分離を無効にした場合、プライマリRDSインスタンスと読み取り専用RDSインスタンスのエンドポイントをアプリケーションに追加した後にのみ、読み書き分離を実行できます。

    読み書き分離を有効にした場合、データベースプロキシエンドポイントに接続するだけで、プライマリRDSインスタンスと読み取り専用RDSインスタンスに自動的に転送される書き込みリクエストと読み取りリクエストを処理できます。 これにより、メンテナンスコストの削減に役立ちます。

    読み取り専用RDSインスタンスを作成して、アプリケーションの設定データを変更することなく、データベースシステムの読み取り機能を向上させることもできます。

  • パフォーマンスを向上させ、メンテナンスコストを削減するネイティブリンク

    クラウドで独自のプロキシ層を構築して読み書き分離を実装する場合、データがデータベースシステムに到達する前に、データを複数のコンポーネントで解析して転送する必要があります。 その結果、応答レイテンシが増加する。 ApsaraDB RDSエコシステムに読み書き分離が組み込まれているため、応答待ち時間の短縮、処理速度の向上、メンテナンスコストの削減が可能です。

  • サービスの可用性を向上させるインスタンスレベルのヘルスチェック

    読み書き分離は、プライマリRDSインスタンスとその読み取り専用RDSインスタンスのヘルスステータスを自動的にチェックします。 読み取り専用RDSインスタンスが予期せずダウンした場合、またはデータレプリケーションの待ち時間が指定されたしきい値を超えた場合、システムは読み取り専用インスタンスへの読み取り要求の転送を停止します。 システムは、障害のある読み取り専用RDSインスタンス宛ての読み取り要求を、データベースシステム内の正常なRDSインスタンスにリダイレクトします。 これにより、個々の読み取り専用RDSインスタンスで障害が発生した場合にサービスの可用性が確保されます。 障害のある読み取り専用RDSインスタンスが回復した後、システムは読み取り専用RDSインスタンスへの読み取りリクエストの転送を再開します。

    説明

    単一障害点 (SPOF) の影響を軽減するために、少なくとも2つの読み取り専用RDSインスタンスを作成することを推奨します。

  • さまざまなシナリオでの適合性を確保するための読み取り重みとしきい値の設定

    プライマリRDSインスタンスと読み取り専用RDSインスタンスの読み取り重みを指定できます。 読み取り専用RDSインスタンスへのデータレプリケーションのレイテンシしきい値を指定することもできます。

リクエスト転送タイプ

転送先

リクエストタイプ

プライマリRDSインスタンス

  • INSERT、UPDATE、DELETE、およびSELECT FOR UPDATEステートメントの実行に使用されるリクエスト

  • データベースまたはテーブルの作成、データベースまたはテーブルの削除、スキーマまたは権限の変更など、DDL操作の実行に使用されるすべての要求

  • トランザクションにカプセル化されたすべての要求

  • ユーザー定義関数の呼び出しに使用されるリクエスト

  • ストアドプロシージャの実行に使用されるリクエスト

  • 複数ステートメントのリクエストRequests for multi-statements

    説明

    複数のステートメントを実行するか、ストアドプロシージャを呼び出すと、現在の接続を介した後続のすべてのリクエストがプライマリRDSインスタンスに転送されます。 読み書き分離を再度実行するには、現在の接続を閉じて新しい接続を確立する必要があります。

  • 一時テーブルに関連するリクエスト

  • システムテーブルの読み取りおよび書き込み要求

  • PreparedStatementオブジェクトに格納されている書き込み操作

プライマリRDSインスタンスまたは読み取り専用RDSインスタンス

  • トランザクションにカプセル化されていないSELECTステートメントの実行に使用されるリクエスト

  • トランザクション分割が有効になった後のトランザクションの最初の書き込み操作前のリクエスト

  • PreparedStatementオブジェクトに格納されている読み取り操作

  • 読み取り専用RDSインスタンスで安全に呼び出すことができるpg_sleepなどのシステム関数

プライマリRDSインスタンスおよび読み取り専用RDSインスタンス

  • システム変数の再構成に使用されるすべての要求

  • PreparedStatementオブジェクトに格納されている構文解析操作

  • BEGIN、START、END、ROLLBACK、およびCOMMIT

  • キャンセル

手順

詳細については、「データベースプロキシ機能の有効化」および「データベースプロキシエンドポイントの接続設定の構成」をご参照ください。

使用上の注意

詳細については、「データベースプロキシ機能の使用上の注意事項」をご参照ください。

FAQ

詳細については、「データベースプロキシ機能に関するFAQ」をご参照ください。