Menu Docs

Read concern "majority"

"majority"

For read operations not associated with multi-document transactions, read concern "majority" guarantees that the data read has been acknowledged by a majority of the replica set members. The documents read are durable and guaranteed to not roll back.

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.

Independentemente do nível de read concern, os dados mais recentes em um nó podem não refletir a versão mais recente dos dados no sistema.

For more information about what happens if a primary fails, see Automatic Failover.

Each replica set member maintains, in memory, a view of the data at the majority-commit point; the majority-commit point is calculated by the primary. To fulfill read concern "majority", the node returns data from this view and is comparable in performance to other read concerns.

preocupação de leitura "majority" is available for use with or without causally consistent sessions and transactions.

Aviso

Se você estiver usando uma arquitetura PSA (primária-secundária-arbiter) de três membros, considere o seguinte:

Considere a seguinte linha do tempo de uma operação de gravação Escrever 0 para um conjunto de réplicas de três membros:

Observação

Para simplificar, o exemplo pressupõe:

  • Todas as gravações anteriores à gravação 0 foram replicadas com sucesso para todos os membros.

  • Escrever prev é a escrita anterior antes de Escrever 0.

  • Nenhuma outra gravação ocorreu após Write 0.

Timeline of a write operation to a three member replica set
Hora
Evento
Escrita mais recente
Mais recente w: escrita da "maioria"

t 0

Primário aplica Write 0

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

t 1

O secundário 1 aplica a gravação 0

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

t 2

O secundário 2 aplica a escrita 0

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

t 3

O Primário está ciente do sucesso da replicação para o Secundário 1 e envia uma confirmação ao cliente

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

t 4

O primário está ciente da replicação bem-sucedida para o secundário 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

O secundário 1 recebe um aviso (por meio de mecanismo de replicação regular) para atualizar o snapshot de sua gravação w: "maioria" mais recente

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

t 6

O secundário 2 recebe um aviso (por meio do mecanismo de replicação regular) para atualizar seu snapshot do w mais recente: "majority" write

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

Depois, as tabelas a seguir resumem o estado dos dados que uma operação de leitura com a preocupação de leitura "majority" veria no momento T.

Timeline of a write operation to a three member replica set.
Meta de leitura
Tempo T
Estado dos dados

Principal

Antes de t 3

Os dados refletem a gravação anterior

Principal

Depois de t 3

Os dados refletem a gravação 0

secundário 1

Antes de t 5

Os dados refletem a gravação anterior

secundário 1

Depois de t 5

Os dados refletem a gravação 0

secundário 2

Before or at t 6

Os dados refletem a gravação anterior

secundário 2

Depois de t 6

Os dados refletem a gravação 0

preocupação de leitura "majority" is available for the WiredTiger storage engine.

Dica

The serverStatus command returns the storageEngine.supportsCommittedReads field, which indicates whether the storage engine supports "majority" read concern.

Observação

You set the read concern at the transaction level, not at the individual operation level. To set the read concern for transactions, see Transações e preocupação de leitura.

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.

Você pode usar sessões causalmente consistentes para ler suas próprias gravações, se as gravações solicitarem confirmação.

A partir do MongoDB 5.0, enableMajorityReadConcern e --enableMajorityReadConcern não podem ser alterados e são sempre definidos como true devido a melhorias no mecanismo de armazenamento.

Em versões anteriores do MongoDB, enableMajorityReadConcern e --enableMajorityReadConcern são configuráveis e podem ser configurados como false para evitar que a pressão do cache de armazenamento imobilize um sistema com uma arquitetura PSA (primary-secondary-arbiter) de três membros.

Se você estiver usando uma arquitetura PSA (primária-secundária-arbiter) de três membros, considere o seguinte: