Estou lendo a documentação do MongoDB há horas, mas não consegui encontrar uma resposta clara e direta. Ao ler ou escrever um documento no MongoDB, que tipo de bloqueio (S, X, IS, IX) ele se aplica no nível do documento?
No vídeo que assisti, explica que um bloqueio S é aplicado ao documento durante o processo de leitura e um bloqueio X é aplicado durante o processo de escrita. Isso também se aplica ao MongoDB?
Li vários documentos, mas não consegui encontrar as informações que procuro.
A resposta direta é nenhuma.
Quando o MongoDB escreve um documento, ele adquire IX bloqueios no banco de dados e na coleção. Se ambos forem bem-sucedidos, ele envia a operação de gravação para o mecanismo de armazenamento wiredTiger subjacente.
Dos documentos do WiredTiger sobre simultaneidade de documentos
As atualizações de documentos são atômicas, portanto não há problema com a leitura - cada leitura recuperará o documento antes da gravação ou depois que toda a gravação for aplicada, portanto, o bloqueio de leitura não é necessário.
Quando vários processos tentam atualizar um documento ao mesmo tempo, apenas um é bem-sucedido, os outros incorrem em um writeConflict e são tentados novamente sem notificar o cliente. O número de writeConflicts que ocorreram na camada de armazenamento é relatado pelo comando serverStatus.