Docs Menu
Docs Home
/ /

analyseShardKey (comando de base de datos)

analyzeShardKey

Nuevo en la versión 7.0.

Calcula métricas para evaluar una clave de fragmento para una colección fragmentada o no fragmentada. Las métricas se basan en consultas muestreadas. Puede usar configureQueryAnalyzer para configurar el muestreo de consultas en una colección.

Este comando está disponible en implementaciones alojadas en los siguientes entornos:

  • MongoDB Atlas: El servicio totalmente gestionado para implementaciones de MongoDB en la nube

Nota

Este comando es compatible con todos los clústeres de MongoDB Atlas. Para obtener información sobre el soporte de Atlas para todos los comandos, consulte Comandos no compatibles.

  • MongoDB Enterprise: La versión basada en suscripción y autogestionada de MongoDB

  • MongoDB Community: La versión de MongoDB con código fuente disponible, de uso gratuito y autogestionada.

analyzeShardKey tiene esta sintaxis:

db.collection.analyzeShardKey(
<shardKey>,
{
keyCharacteristics: <bool>,
readWriteDistribution: <bool>,
sampleRate: <double>,
sampleSize: <int>
}
)
Campo
Tipo
Necesidad
Descripción

shardKey

Documento

Requerido

Clave de fragmento para analizar. Puede ser una clave de fragmento candidata para una colección fragmentada o no fragmentada, o la clave de fragmento actual para una colección fragmentada.

No hay ningún valor predeterminado.

keyCharacteristics

booleano

Opcional

Si se calculan o no las métricas sobre las características de la clave de partición. Para obtener detalles, consulta keyCharacteristics.

Se establece por defecto en true.

readWriteDistribution

booleano

Opcional

Si se calculan o no las métricas sobre la distribución de lectura y escritura. Para más detalles, consulte readWriteDistribution.

Se establece por defecto en true.

Para devolver las métricas de distribución de lectura y analyzeShardKey escritura de una colección mediante, debe configurar el analizador de consultas para que muestree las consultas ejecutadas en la colección. De lo contrario, analyzeShardKey devuelve las métricas de distribución de lectura y escritura como 0 valores. Para configurar el analizador de consultas, consulte configureQueryAnalyzer (comando de base de datos).

sampleRate

doble

Opcional

La proporción de documentos de la colección que se muestrea al calcular las métricas sobre las características de la clave de fragmento. Si se establece sampleRate, no se puede establecer sampleSize.

Debe ser mayor que 0, hasta 1 inclusive.

No hay ningún valor predeterminado.

sampleSize

entero

Opcional

El número de documentos que se muestrearán al calcular las métricas sobre las características de la clave de fragmento. Si se establece sampleSize, no se puede establecer sampleRate.

Si no se especifica y sampleRate no se especifica, el tamaño de la muestra se define por defecto en el tamaño de la muestra establecido por analyzeShardKeyCharacteristicsDefaultSampleSize.

analyzeShardKey devuelve diferentes métricas según los valores keyCharacteristic y readWriteDistribution que especifique cuando ejecute el método.

keyCharacteristic Consiste en las métricas sobre la cardinalidad, frecuencia y monotonía de la clave del fragmento. Estas métricas solo se devuelven cuando keyCharacteristics es verdadero.

Las métricas se calculan al analyzeShardKey ejecutar, basándose en los documentos muestreados de la colección. El cálculo requiere que la clave de fragmento tenga un índice de apoyo. Si no hay índice de apoyo, no se devuelven métricas.

Puede configurar el muestreo con los sampleRate sampleSize campos y. Ambos son opcionales, pero solo se puede especificar uno. Si sampleRate no sampleSize se especifican ni, MongoDB usa el valor del parámetro, cuyo valor predeterminado analyzeShardKeyCharacteristicsDefaultSampleSize es 10 millones.

Para calcular métricas basadas en todos los documentos de la colección, establece el sampleRate en 1.

readWriteDistribution Contiene métricas sobre los patrones de enrutamiento de consultas y la relevancia de los rangos de claves de fragmentos. Estas métricas se basan en consultas muestreadas.

Para configurar el muestreo de consultas para una colección, use el comando configureQueryAnalyzer. Las métricas de distribución de lectura y escritura solo se devuelven si readWriteDistribution es true. Las métricas se calculan al ejecutar analyzeShardKey y utilizan las consultas de lectura y escritura muestreadas. Si no hay consultas muestreadas, no se devuelven las métricas de distribución de lectura y escritura.

  • Si no hay consultas de lectura muestreadas, el comando devuelve writeDistribution pero omite readDistribution.

  • Si no hay consultas de escritura muestreadas, el comando devuelve readDistribution pero omite writeDistribution.

Para devolver las métricas de distribución de lectura y analyzeShardKey escritura de una colección mediante, debe configurar el analizador de consultas para que muestree las consultas ejecutadas en la colección. De lo contrario, analyzeShardKey devuelve las métricas de distribución de lectura y escritura como 0 valores. Para configurar el analizador de consultas, consulte configureQueryAnalyzer (comando de base de datos).

keyCharacteristics Valor
readWriteDistribution Valor
Resultados devueltos

true

false

false

true

analyzeShardKey devuelve readWriteDistribution métricas y omite keyCharacteristics métricas.

true

true

  • analyzeShardKey devuelve métricas readWriteDistribution y métricas keyCharacteristics.

  • Si la clave de fragmento no tiene un índice de soporte, analyzeShardKey devuelve readWriteDistribution métricas y omite keyCharacteristics métricas.

analyzeShardKey no bloquea lecturas ni escrituras en la colección.

La calidad de las métricas sobre la distribución de lectura y escritura se determina por la representatividad de la carga de trabajo al realizar el muestreo de consultas. En algunas aplicaciones, obtener métricas representativas puede requerir mantener el muestreo de consultas activado durante varios días.

El índice de soporte requerido por analyzeShardKey es diferente del índice de soporte requerido por el shardCollection comando.

Esta tabla muestra los índices de soporte para la misma clave de fragmento tanto para analyzeShardKey como para shardCollection:

Comando
Clave de fragmento
Índices de apoyo

analyzeShardKey

{ a.x: 1, b: "hashed" }

  • { a.x: 1, b: 1, ... }

  • { a.x: "hashed", b: 1, ... }

  • { a.x: 1, b: "hashed", ... }

  • { a.x: "hashed", b: "hashed", ...}

shardCollection

{ a.x: 1, b: "hashed" }

{ a.x: 1, b: “hashed”, ... }

Esto permite analizar una clave de partición que puede que aún no tenga un índice compatible necesario para particionarla.

Tanto analyzeShardKey como shardCollection tienen los siguientes requisitos de índice:

Para crear índices de apoyo, utilice el db.collection.createIndex() método.

Para minimizar el rendimiento, ejecuta analyzeShardKey con la preferencia de lectura secondary o secondaryPreferred. En un clúster fragmentado, mongos establece automáticamente la preferencia de lectura en secondaryPreferred si no se especifica.

  • No se puede ejecutar analyzeShardKey en clústeres flexibles de Atlas.

  • No se puede ejecutar analyzeShardKey en implementaciones independientes.

  • No se puede ejecutar analyzeShardKey directamente en un --shardsvr conjunto de réplicas. Al ejecutarse en un clúster fragmentado, analyzeShardKey debe ejecutarse en mongos un.

  • No se puede ejecutar analyzeShardKey contra colecciones de series de tiempo.

  • No se puede ejecutar analyzeShardKey en colecciones con cifrado consultable.

analyzeShardKey requiere uno de estos roles:

analyzeShardKey devuelve información sobre keyCharacteristics y readWriteDistribution.

  • keyCharacteristics Proporciona métricas sobre la cardinalidad, frecuencia y monotonía de la clave del fragmento.

  • readWriteDistribution Proporciona métricas sobre patrones de enrutamiento de consultas y el interés de los rangos de claves de fragmentos.

Esta es la estructura del documento keyCharacteristics que se devuelve cuando se establece keyCharacteristics en true:

{
keyCharacteristics: {
numDocsTotal: <integer>,
numOrphanDocs: <integer>,
avgDocSizeBytes: <integer>,
numDocsSampled: <integer>,
isUnique: <bool>,
numDistinctValues: <integer>,
mostCommonValues: [
{ value: <shardkeyValue>, frequency: <integer> },
...
],
monotonicity: {
recordIdCorrelationCoefficient: <double>,
type: "monotonic"|"not monotonic"|"unknown",
}
}
}
Campo
Tipo
Descripción
Uso

numDocsTotal

entero

El número de documentos en la colección.

numOrphanDocs

entero

El número de documentos huérfanos.

Los documentos huérfanos no se excluyen del cálculo de métricas por motivos de rendimiento. Si numOrphanDocs es grande en relación con numDocsTotal, considere esperar hasta que el número de documentos huérfanos sea muy pequeño en comparación con el número total de documentos de la colección para ejecutar el comando.

avgDocSizeBytes

entero

El tamaño promedio de los documentos en la colección, en bytes.

Si numDocsTotal es comparable a numDocsSampled, puedes estimar el tamaño de los fragmentos más grandes multiplicando el frequency de cada mostCommonValues por avgDocSizeBytes.

numDocsSampled

entero

El número de documentos muestreados.

numDistinctValues

entero

El número de valores de clave de fragmento distintos.

Elija una clave de fragmento con un numDistinctValues grande, ya que la cantidad de valores de clave de fragmento distintos es la cantidad máxima de fragmentos que el balanceador puede crear.

isUnique

booleano

Indica si la clave de fragmento es única. Solo se establece en true si existe un índice único para la clave de fragmento.

Si la clave del fragmento es única, entonces la cantidad de valores distintos es igual a la cantidad de documentos.

mostCommonValues

conjunto de documentos

Una matriz de valores y frequency (número de documentos) de los valores de clave de fragmento más comunes.

La frecuencia de un valor de clave de fragmento es el número mínimo de documentos en el fragmento que contiene ese valor. Si la frecuencia es alta, el fragmento puede convertirse en un cuello de botella para el almacenamiento, la lectura y la escritura. Elija una clave de fragmento cuya frecuencia para cada valor más común sea baja en relación con numDocsSampled.

El número de valores de clave de fragmento más comunes se puede configurar analyzeShardKeyNumMostCommonValues estableciendo, cuyo valor predeterminado 5 es. Para evitar superar el 16límite de tamaño de BSON de MB para la respuesta, cada valor se trunca si su tamaño supera 15MB / analyseShardKey NumMostCommonValues.

mostCommonValues[n].value

Documento

La clave del fragmento.

mostCommonValues[n].frequency

entero

La cantidad de documentos para una clave de fragmento determinada.

Elija una clave de fragmento donde la frecuencia de cada valor más común sea baja en relación con numDocsSampled.

monotonicity. recordIdCorrelationCoefficient

doble

Sólo se establece si se conoce la monotonía.

Esto se establece en "unknown" cuando se cumple una de las siguientes condiciones:

  • La clave de fragmento no tiene un índice de soporte según la definición shardCollection.

  • La colección está agrupada.

  • La clave de partición es una clave de partición compuesta encriptada, donde el campo que se encripta no es el primer campo.

La comprobación de monotonía puede devolver un resultado incorrecto si la colección ha pasado por migraciones de fragmentos. La migración de fragmentos elimina documentos del fragmento donante y los reinserta en el fragmento receptor. No se garantiza que se conserve el orden de inserción del cliente.

Puede configurar el umbral para el coeficiente de correlación con analyseShardKeyMonotonicity CorrelationCoefficientThreshold.

monotoncity.type

string

Puede ser uno de:

"monotonic", "not monotonic", "unknown"

Evita una clave de partición (shard key) del tipo "monotonic", a menos que no esperes insertar nuevos documentos con frecuencia.

Si una colección se fragmenta con una clave de fragmento que aumenta o disminuye monótonamente, se insertarán nuevos documentos en el fragmento que posee el fragmento MaxKey o MinKey. Ese fragmento puede convertirse en un cuello de botella para las inserciones y es probable que los datos estén desequilibrados la mayor parte del tiempo, ya que el equilibrador deberá competir con las inserciones entrantes.

Esta es la estructura del documento que se devuelve cuando readWriteDistribution se establece en true:

{
readDistribution: {
sampleSize: {
total: <integer>,
find: <integer>,
aggregate: <integer>,
count: <integer>,
distinct: <integer>
},
percentageOfSingleShardReads: <double>,
percentageOfMultiShardReads: <double>,
percentageOfScatterGatherReads: <double>,
numReadsByRange: [
<integer>,
...
]
},
writeDistribution: {
sampleSize: {
total: <integer>,
update: <integer>,
delete: <integer>,
findAndModify: <integer>
},
percentageOfSingleShardWrites: <double>,
percentageOfMultiShardWrites: <double>,
percentageOfScatterGatherWrites: <double>,
numWritesByRange: [
<integer>,
...
],
percentageOfShardKeyUpdates: <double>,
percentageOfSingleWritesWithoutShardKey: <double>,
percentageOfMultiWritesWithoutShardKey: <double>
}
}

Para devolver las métricas de distribución de lectura y analyzeShardKey escritura de una colección mediante, debe configurar el analizador de consultas para que muestree las consultas ejecutadas en la colección. De lo contrario, analyzeShardKey devuelve las métricas de distribución de lectura y escritura como 0 valores. Para configurar el analizador de consultas, consulte configureQueryAnalyzer (comando de base de datos).

Campo
Tipo
Descripción
Uso

sampleSize.total

entero

La cantidad total de queries de lectura muestreados.

sampleSize.find

entero

Número total de consultas muestreadas find.

sampleSize.aggregate

entero

Número total de consultas muestreadas aggregate.

sampleSize.count

entero

Número total de consultas muestreadas count.

sampleSize.distinct

entero

Número total de consultas muestreadas distinct.

percentageOfSingleShardReads

doble

Porcentaje de lecturas que apuntan a un solo fragmento, independientemente de cómo se distribuyan los datos.

percentageOfMultiShardReads

doble

Porcentaje de lecturas que apuntan a múltiples fragmentos.

Esta categoría incluye las lecturas que pueden tener como objetivo solo un fragmento si los datos se distribuyen de tal manera que los valores a los que apunta la lectura caen bajo un solo fragmento.

Si las consultas operan en una gran cantidad de datos, entonces apuntar a múltiples fragmentos en lugar de uno puede resultar en una disminución en la latencia debido a la ejecución de consultas en paralelo.

percentageOfScatterGatherReads

doble

Porcentaje de lecturas que se dispersan y se reúnen, independientemente de cómo se distribuyen los datos.

Evite una clave de fragmento con un valor alto para esta métrica. Si bien las consultas de dispersión y recopilación tienen poco impacto en los fragmentos que no contienen los datos de destino, sí tienen cierto impacto en el rendimiento.

En un clúster con una gran cantidad de fragmentos, las consultas de dispersión y recopilación tienen un rendimiento significativamente peor que las consultas dirigidas a un solo fragmento.

numReadsByRange

matriz de números enteros

Matriz de números que representa la cantidad de veces que se selecciona cada rango ordenado de MinKey a MaxKey.

Evite una clave de fragmento donde la distribución de numReadsByRange esté muy sesgada, ya que eso implica que es probable que haya uno o más fragmentos activos para las lecturas.

Elija una clave de fragmento donde la suma de numReadsByRange sea similar a sampleSize.total.

El número de rangos se puede configurar mediante el parámetro analyzeShardKeyNumRanges, cuyo valor predeterminado es 100. El valor es 100 porque el objetivo es encontrar una clave de fragmento que se adapte a 100 fragmentos.

Campo
Tipo
Descripción
Uso

sampleSize.total

entero

La cantidad total de queries de escritura muestreados.

sampleSize.update

entero

Número total de consultas muestreadas update.

sampleSize.delete

entero

Número total de consultas muestreadas delete.

sampleSize.findAndModify

entero

Número total de consultas muestreadas findAndModify.

percentageOfSingleShardWrites

doble

Porcentaje de escrituras que tienen como objetivo un solo fragmento, independientemente de cómo se distribuyan los datos.

percentageOfMultiShardWrites

doble

Porcentaje de escrituras que apuntan a múltiples fragmentos.

Esta categoría incluye las escrituras que pueden tener como objetivo solo un fragmento si los datos se distribuyen de tal manera que los valores a los que apunta la escritura caen bajo un solo fragmento.

percentageOfScatterGatherWrites

doble

Porcentaje de escrituras que se dispersan y recopilan, independientemente de cómo se distribuyen los datos.

Evita una clave de partición con un valor alto para esta métrica, ya que generalmente es más eficiente que un guardado se dirija a una única partición.

numWritesByRange

matriz de números enteros

Matriz de números que representa la cantidad de veces que se selecciona cada rango ordenado de MinKey a MaxKey.

Evite una clave de fragmento donde la distribución de numWritesByRange esté muy sesgada, ya que eso implica que es probable que haya uno o más fragmentos activos para escrituras.

Elija una clave de fragmento donde la suma de numWritesByRange sea similar a sampleSize.total.

El número de rangos se puede configurar mediante el parámetro analyzeShardKeyNumRanges, cuyo valor predeterminado es 100. El valor es 100 porque el objetivo es encontrar una clave de fragmento que se adapte a 100 fragmentos.

percentageOfShardKeyUpdates

doble

Porcentaje de consultas de escritura que actualizan el valor de la clave de fragmento de un documento.

Evite usar una clave de fragmento con un valor alto de. Actualizar el percentageOfShardKeyUpdates valor de la clave de fragmento de un documento puede provocar que este se mueva a otro fragmento, lo que requiere la ejecución de una transacción interna en el fragmento al que se dirige la consulta. Para obtener más información sobre cómo cambiar el valor de la clave de fragmento de un documento, consulte Cambiar una clave de fragmento.

Actualmente, las actualizaciones solo se admiten como escrituras reintentables o en una transacción, y tienen un límite de tamaño de lote de 1.

percentageOfSingleWritesWithoutShardKey

doble

El porcentaje de consultas de escritura que son multi=false y no se pueden dirigir a un solo fragmento.

Evite una clave de fragmento con un valor alto para esta métrica.

Realizar este tipo de escritura es costoso porque puede implicar la ejecución de transacciones internas.

percentageOfMultiWritesWithoutShardKey

doble

El porcentaje de consultas de escritura que son multi=true y no se pueden dirigir a un solo fragmento.

Evite una clave de fragmento con un valor alto para esta métrica.

Considere una versión simplificada de una aplicación de redes sociales. La colección que intentamos fragmentar es la colección post.

Los documentos de la colección post tienen el siguiente esquema:

{
userId: <uuid>,
firstName: <string>,
lastName: <string>,
body: <string>, // the field that can be modified.
date: <date>, // the field that can be modified.
}
  • La aplicación tiene 1500 usuarios.

  • Hay 30 apellidos y 45 nombres, algunos más comunes que otros.

  • Hay tres usuarios famosos.

  • Cada usuario sigue exactamente a cinco usuarios más y tiene una probabilidad muy alta de seguir al menos a un usuario famoso.

  • Cada usuario publica unas dos entradas al día en horarios aleatorios. Edita cada entrada una vez, justo después de su publicación.

  • Cada usuario inicia sesión cada seis horas para leer su perfil y las publicaciones de los usuarios que sigue en las últimas 24 horas. También responde en una publicación aleatoria de las últimas tres horas.

  • Para cada usuario, la aplicación elimina las publicaciones que tengan más de tres días de antigüedad a medianoche.

Esta carga de trabajo tiene los siguientes patrones de consulta:

  • find comando con filtro { userId: , firstName: , lastName: }

  • find comando con filtro { $or: [ { userId: , firstName: , lastName: , date: { $gte: } }, ... , { userId: , date: } ] }

  • findAndModify Comando con filtro { userId: , firstName: , lastName: , date: } para actualizar el cuerpo y el campo de fecha.

  • update Comando con multi: false y filtro { userId: , firstName: , lastName: , date: { $gte: , $lt: } } para actualizar el cuerpo y el campo de fecha.

  • delete comando con multi: true y filtro { userId: , firstName: , lastName: , date: { $lt: } }

A continuación se muestran métricas de ejemplo devueltas por el comando analyzeShardKey para algunas claves de fragmentos candidatas, con consultas muestreadas recopiladas a partir de siete días de carga de trabajo.

Nota

Antes de ejecutar analyzeShardKey los comandos, lea la sección "Índices de soporte" que aparece anteriormente en esta página. Si necesita índices de soporte para la clave de fragmento que está analizando, utilice el db.collection.createIndex() método para crearlos.

Este ejemplo utiliza el comando analyzeShardKey para proporcionar métricas en la clave de fragmento { _id: 1 } en la colección social.post.

El siguiente bloque de código utiliza para activar el muestreo de db.collection.configureQueryAnalyzer() consultas:

use social
db.post.configureQueryAnalyzer(
{
mode: "full",
samplesPerSecond: 5
}
)

Después de que db.collection.configureQueryAnalyzer() recopila muestras de consultas, el siguiente bloque de código usa el comando analyzeShardKey para muestrear documentos 10,000 y calcular resultados:

use social
db.post.analyzeShardKey(
{ _id: 1 },
{
keyCharacteristics: true,
readWriteDistribution: false,
sampleSize: 10000
}
)

Este comando analyzeShardKey proporciona métricas sobre la clave de partición { lastName: 1 } de la colección social.post:

use social
db.post.analyzeShardKey(
{ lastName: 1 },
{
keyCharacteristics: true,
readWriteDistribution: false
}
)

La salida de este ejemplo se parece a la siguiente:

{
"keyCharacteristics": {
"numDocsTotal" : 9039,
"avgDocSizeBytes" : 153,
"numDocsSampled" : 9039,
"isUnique" : false,
"numDistinctValues" : 30,
"mostCommonValues" : [
{
"value" : {
"lastName" : "Smith"
},
"frequency" : 1013
},
{
"value" : {
"lastName" : "Johnson"
},
"frequency" : 984
},
{
"value" : {
"lastName" : "Jones"
},
"frequency" : 962
},
{
"value" : {
"lastName" : "Brown"
},
"frequency" : 925
},
{
"value" : {
"lastName" : "Davies"
},
"frequency" : 852
}
],
"monotonicity" : {
"recordIdCorrelationCoefficient" : 0.0771959161,
"type" : "not monotonic"
},
}
}

Este comando analyzeShardKey proporciona métricas sobre la clave de partición { userId: 1 } de la colección social.post:

use social
db.post.analyzeShardKey(
{ userId: 1 },
{
keyCharacteristics: true,
readWriteDistribution: false
}
)

La salida de este ejemplo se parece a la siguiente:

{
"keyCharacteristics": {
"numDocsTotal" : 9039,
"avgDocSizeBytes" : 162,
"numDocsSampled" : 9039,
"isUnique" : false,
"numDistinctValues" : 1495,
"mostCommonValues" : [
{
"value" : {
"userId" : UUID("aadc3943-9402-4072-aae6-ad551359c596")
},
"frequency" : 15
},
{
"value" : {
"userId" : UUID("681abd2b-7a27-490c-b712-e544346f8d07")
},
"frequency" : 14
},
{
"value" : {
"userId" : UUID("714cb722-aa27-420a-8d63-0d5db962390d")
},
"frequency" : 14
},
{
"value" : {
"userId" : UUID("019a4118-b0d3-41d5-9c0a-764338b7e9d1")
},
"frequency" : 14
},
{
"value" : {
"userId" : UUID("b9c9fbea-3c12-41aa-bc69-eb316047a790")
},
"frequency" : 14
}
],
"monotonicity" : {
"recordIdCorrelationCoefficient" : -0.0032039729,
"type" : "not monotonic"
},
}
}

Este comando analyzeShardKey proporciona métricas sobre la clave de partición { userId: 1 } de la colección social.post:

use social
db.post.analyzeShardKey(
{ userId: 1 },
{
keyCharacteristics: false,
readWriteDistribution: true
}
)

La salida de este ejemplo se parece a la siguiente:

{
"readDistribution" : {
"sampleSize" : {
"total" : 61363,
"find" : 61363,
"aggregate" : 0,
"count" : 0,
"distinct" : 0
},
"percentageOfSingleShardReads" : 50.0008148233,
"percentageOfMultiShardReads" : 49.9991851768,
"percentageOfScatterGatherReads" : 0,
"numReadsByRange" : [
688,
775,
737,
776,
652,
671,
1332,
1407,
535,
428,
985,
573,
1496,
...
],
},
"writeDistribution" : {
"sampleSize" : {
"total" : 49638,
"update" : 30680,
"delete" : 7500,
"findAndModify" : 11458
},
"percentageOfSingleShardWrites" : 100,
"percentageOfMultiShardWrites" : 0,
"percentageOfScatterGatherWrites" : 0,
"numWritesByRange" : [
389,
601,
430,
454,
462,
421,
668,
833,
493,
300,
683,
460,
...
],
"percentageOfShardKeyUpdates" : 0,
"percentageOfSingleWritesWithoutShardKey" : 0,
"percentageOfMultiWritesWithoutShardKey" : 0
}
}

Volver

añadirFragmentoAZona

En esta página