AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

読み取り保証 (read concern) "majority" (読み取り保証 "majority")

"majority"

マルチドキュメントトランザクションに関連しない読み取り操作の場合、読み取り保証 (read concern) "majority" は、読み取られたデータがレプリカセットの過半数によって確認済みであることを保証します。読み取られたドキュメントは永続的であり、ロールバックされないことが保証されます。

For operations in multi-document transactions, read concern "majority" provides its guarantees only if the transaction commits with write concern "majority". Otherwise, the "majority" read concern provides no guarantees about the data read in transactions.

読み取り保証のレベルを問わず、ノード上の最新データにシステム内のデータの最新バージョンが反映されていない場合があります。

プライマリに障害が発生した場合の詳細については、「自動フェイルオーバー」を参照してください。

レプリカセットの各ノードは、メモリ内にマジョリティ コミット ポイントのデータのビューを保持します。マジョリティ コミット ポイントはプライマリによって計算されます。読み取り保証 "majority" を満たすために、ノードはこのビューからデータを返しますが、パフォーマンスは他の読み取り保証と同等です。

読み取り保証 (read concern) "majority" はクエリのパフォーマンスを低下させません。クライアントに返されるもののみを変更します。読み取り保証 "majority" では、レプリカセット内の過半数のノードに永続的に保存されているデータのみがクライアントに返されます。対照的に、読み取り保証 (read concern) "local" のクエリでは、ロールバックなどの特定のシナリオで失われる可能性のあるデータを返す場合があります。

Read concern "majority" is available for use with or without causally consistent sessions and transactions.

警告

3 ノードのプライマリセカンダリアービタ(PSA)アーキテクチャを使用している場合は、次の点を考慮してください。

  • セカンダリが使用できないか、遅延している場合、書込み保証 (write concern) "majority" が原因でパフォーマンスの問題が発生することがあります。こうした問題を軽減する方法については、「自己管理型 PSA レプリカセットのパフォーマンス問題の軽減」を参照してください。

  • If you are using a global default "majority" and the write concern is less than the size of the majority, your queries may return stale (not fully replicated) data.

次の書込み (write) 操作のタイムラインを考えてみましょう。3 つのノードからなるレプリカセットに Write 0 します。

注意

単純化のため、この例では次のことを前提としています。

  • Write 0 より前のすべての書込みは、すべてのノードに正常にレプリケーションされました。

  • Write prev は Write 0 の前の書込みです。

  • Write 0 の後、他の書込みは発生していません。

3 つのノードからなるレプリカセットへの書込み操作のタイムライン
時間
イベント
最新の書込み
直近の w: "majority" 書込み

t 0

プライマリが Write 0 を適用

プライマリ: Write0
1セカンダリ: Write prev
2セカンダリ: Write prev

プライマリ: Write prev
1セカンダリ: Write prev
2セカンダリ: Write prev

t 1

セカンダリ 1 が Write 0 を適用

プライマリ: Write0
1セカンダリ: Write0
2セカンダリ: Write prev

Primary: Write prev
Secondary 1: Write prev
Secondary 2: Write prev

t 2

セカンダリ 2 が Write 0 を適用

プライマリ: 書き込み0
1セカンダリ: 書き込み0
2セカンダリ: 書き込み0

Primary: Write prev
Secondary 1: Write prev
Secondary 2: Write prev

t 3

プライマリがセカンダリ1へのレプリケーション成功を認識し、クライアントに確認応答を送信

Primary: Write 0
Secondary 1: Write 0
Secondary 2: Write 0

Primary: Write 0
Secondary 1: Write prev
Secondary 2: Write prev

t 4

プライマリがセカンダリ2 へのレプリケーション成功を認識

Primary: Write 0
Secondary 1: Write 0
Secondary 2: Write 0

Primary: Write 0
Secondary 1: Write prev
Secondary 2: Write prev

t 5

セカンダリ 1 が(定期的なレプリケーションを通じて)最新の w: " majority " 書込みのスナップショットを更新するよう通知を受信

Primary: Write 0
Secondary 1: Write 0
Secondary 2: Write 0

Primary: Write 0
Secondary 1: Write 0
Secondary 2: Write prev

t 6

セカンダリ 2 が(定期的なレプリケーションを通じて)最新の w: " majority " 書込みのスナップショットを更新するよう通知を受信

Primary: Write 0
Secondary 1: Write 0
Secondary 2: Write 0

Primary: Write 0
Secondary 1: Write 0
Secondary 2: Write 0

Then, the following tables summarizes the state of the data that a read operation with "majority" read concern would see at time T.

3 つのノードからなるレプリカセットへの書込み (write) 操作のタイムライン。
読み取りの対象
時間 T
データの状態

原発

t 3 より前

データは Write prev を反映

原発

t 3 より後

データは Write 0 を反映

セカンダリ 1

t 5 より前

データは Write prev を反映

セカンダリ 1

t 5 より後

データは Write 0 を反映

セカンダリ 2

t 6 以前

データは Write prev を反映

セカンダリ 2

t 6 より後

データは Write 0 を反映

Read concern "majority" is available for the WiredTiger storage engine.

Tip

serverStatus コマンドは、ストレージエンジンが "majority" 読み取り保証をサポートしているかどうかを示す storageEngine.supportsCommittedReads フィールドを返します。

注意

読み取り保証 (read concern) は、個々の操作レベルではなく、トランザクション レベルで設定します。トランザクションに読み取り保証 (read concern) を設定するには、「トランザクションと読み取り保証 (read concern)」を参照してください。

For operations in multi-document transactions, read concern "majority" provides its guarantees only if the transaction commits with write concern "majority". Otherwise, the "majority" read concern provides no guarantees about the data read in transactions.

You can specify read concern level "majority" for an aggregation that includes an $out stage.

書き込みリクエスト確認をする場合は、非公式のコンシステントセッションを使用して自分の書き込みを読み取ることができます。

MongoDB 5.0 以降では、ストレージエンジンの改善により、enableMajorityReadConcern--enableMajorityReadConcern は変更できなくなり、常にtrue に設定されています。

MongoDB の以前のバージョンでは、enableMajorityReadConcern--enableMajorityReadConcern を構成可能であり、これらを false に設定して、ストレージ キャッシュの負荷が 3 つのノードからなるプライマリとセカンダリのアービタ(PSA)アーキテクチャで配置が固定されないようにできます。

3 ノードのプライマリセカンダリアービタ(PSA)アーキテクチャを使用している場合は、次の点を考慮してください。

  • セカンダリが使用できないか、遅延している場合、書込み保証 (write concern) "majority" が原因でパフォーマンスの問題が発生することがあります。こうした問題を軽減する方法については、「自己管理型 PSA レプリカセットのパフォーマンス問題の軽減」を参照してください。

  • If you are using a global default "majority" and the write concern is less than the size of the majority, your queries may return stale (not fully replicated) data.