Eu tenho um banco de dados MongoDB com tamanho de dados de ~ 100 GB. Fiz um teste com 300 threads e um total de 10.000 consultas 'lidas'. Percebo que no bloqueio de MMS% está mostrando 0,6 ~ 1% de bloqueio de gravação. Minha pergunta é, as consultas são puramente 'lidas', por que está mostrando o bloqueio de gravação?
Em primeiro lugar, para corrigir o comentário: o criador de perfil não grava no banco de dados local, ele grava em qualquer banco de dados que você esteja criando o perfil na
system.profile
coleção. Portanto, se você estivesse lendo do banco de dadosfoo
e tivesse o perfil ativado, a coleção seriafoo.system.profile
. Você pode ativar a criação de perfil para o banco de dados local e, portanto, fazer com que o criador de perfil grave lá, é claro, mas não é um padrão de nenhum tipo.Então, se você tiver o criador de perfil ativado, independentemente de onde ele grava também, todas as gravações exigem um bloqueio de gravação, sejam elas na
system.profile
coleção ou em qualquer outro lugar. Só porque está recebendo entrada internamente não exclui asystem.profile
coleção de seguir as mesmas regras de qualquer outra coleção em um banco de dados.Se você desligar o profiler, esperaria que o bloqueio desaparecesse. Ainda pode haver um pontinho ocasional na porcentagem de bloqueio global nas estatísticas, mas isso é essencialmente apenas ruído de fundo.