mongoDB, manual

Posicionamiento

Como una base de datos no relacional, a
menudo se compara con mysql

Ventaja

  • Fácil de expandir, sin concepto de estructura de tabla, agregue campos a voluntad (puede ser a voluntad pero no a voluntad)
  • El rendimiento de la transacción de colección única + el rendimiento de adición, eliminación y modificación no transaccional son mejores que mysql
  • Soporte natural de fragmentación de expansión horizontal (fragmentación)

Desventajas

  • El rendimiento de las transacciones de cobro cruzado es bajo. La recomendación oficial es utilizar documentos anidados en lugar de diseño relacionado en bases de datos relacionales. Sin embargo, debe tener cuidado de no diseñar datos con mayor espacio de crecimiento como documentos anidados. Primero, el diseño puede no ser razonable. Segundo, para documentos anidados con mayor espacio de crecimiento , la optimización y las consultas estadísticas son más problemáticas.

Construir y configurar

En referencia a la construcción del documento oficial
de producción utilizando Notas:

  • Uso preferencial de servicios en la nube
  • Para la autoconstrucción, el entorno formal necesita crear un conjunto de copias para evitar el bloqueo de un solo nodo
  • mogno no tiene contraseña por defecto, no se una a la red IP externa cuando la autorización no está configurada
  1. Conjunto de réplica

    1. Si algunos miembros fallan, el conjunto de réplicas aún puede realizar operaciones de escritura y lectura.
      Sin embargo, si el centro de datos con la mayoría de los miembros falla, el conjunto de réplicas será de solo lectura.
  2. Sharding

    El fragmentación requiere al menos dos fragmentos para distribuir los datos fragmentados. Si planea habilitar el fragmentación en el futuro cercano, pero no es necesario durante la implementación, un solo clúster fragmentado puede ser útil.

    1. Configuracion
      1. El servicio de configuración se implementa como tres miembros del conjunto de réplicas
      2. Implemente cada fragmento como un conjunto de réplicas de 3 miembros
      3. Implemente uno o más enrutadores mongos
    2. Secuencia de arranque
      1. ConfigSvr debe ser un conjunto de réplicas servicio de configuración de metadatos
      2. shardsvr debe ser un conjunto de réplicas
      3. mongos gateway

Asuntos que requieren atención

  1. Indice
    1. mongo no es solo mongo, la consulta debe llegar al índice
    2. Tenga en cuenta que para usar el índice de manera efectiva, mientras lo golpea, debe controlar el rango de aciertos del índice. Si el rango es demasiado grande, no hay índice.
    3. Al crear un índice, debe especificar background: true para evitar la gran cantidad de datos de tabla que atascan la base de datos
      # 查看user_mobile_info表索引创建 进度
      db.currentOp({"command.createIndexes":"user_mobile_info"}) 
      
    4. La consulta de Mongo no realizará automáticamente la conversión de tipo como mysql, debe usar el tipo correspondiente (carácter | número)
    5. Un campo puede tener tanto un tipo de carácter como un tipo de número, y se debe prestar especial atención a los cambios al usarlo
    6. Utilice razonablemente el parámetro expireAfterSeconds del índice
    7. Todos los índices se crean a través de anotaciones de datos de resorte, que son más intuitivos para ver durante la programación.
  2. Cosas
    1. Después de la versión 4.2, el soporte de transacciones es relativamente completo, pero las transacciones de recolección cruzada tienen problemas de rendimiento
  3. Sin disco
    1. eliminar no liberará espacio en disco (continuar ocupando será reutilizado)
    2. drop liberará algo de espacio en disco
    3. RepairDatabase reconstruirá el espacio y el índice sin embargo.
      1. Bloqueará toda la biblioteca
      2. 50% + espacio adicional requerido
      3. Más tiempo
      4. Otras operaciones similares también bloquearán la biblioteca o la tabla

    Cuando el consumo de memoria de la tabla de la biblioteca es relativamente grande, la liberación de espacio será muy problemática, por lo que debe hacer un conjunto de copias al crear la base de datos.
    Copiar la base de datos de reparación uno por uno no es problema

Solucionar problemas de mongodDB

  1. mongodDB crash
    1. Verifique el archivo de registro en busca de problemas específicos (la ruta del archivo se especifica al inicio)
    2. Reinicie, preste atención al archivo de configuración especificado
    3. Priorizar problemas de memoria de la máquina
  2. mognoDB atascado
    1. Priorizar problemas de indexación, así como problemas de red
    2. Se puede comenzar todo el tema está escrito o leído, el uso mongostat similar a UNIX / Linux vmstat utilidad de sistema de archivos, que se encuentra en la instalación directorio / bin del directorio
    3. Ver problemas específicos a través de registros lentos, ver registros lentos
      1. Comandos comunes
      # 查看慢日志是否开启,以及级别和时间(毫秒) 
      PRIMARY> db.getProfilingStatus()
      { "was" : 1, "slowms" : 200 }
      #查看级别 
      0 –  不开启 
      1 –  记录慢命令 (默认为>100ms)  
      2 –  记录所有命令  
      PRIMARY> db.getProfilingLevel()
      1
      # 设置级别和时间
      PRIMARY> db.setProfilingLevel(1,200)
      { "was" : 2, "slowms" : 100, "ok" : 1 }
      # 案例(排除了某些表的慢日志结果,并按耗时大小排序(毫秒))
      db.system.profile.find( { millis : { $gt : 100 }, ns:{$nin:["imoney.accountCheck","imoney.accountPay"]} } ).sort({millis:-1})
      
    4. Consulte el registro de mongo para ver las excepciones.
    5. Compruebe si la memoria del disco de la CPU de la red del sistema es anormal
17 artículos originales publicados · ganó 24 · vistas 280,000 +

Supongo que te gusta

Origin blog.csdn.net/qq_22956867/article/details/102706762
Recomendado
Clasificación