¿Cómo se obtiene el tamaño de un individuo índice en MongoDB?

Sé que puedo usar db.collection.totalIndexSize() para obtener el total del índice de tamaño, pero estoy interesado en ver el tamaño de un índice individual.

Es este apoyo?

InformationsquelleAutor Zach | 2011-10-21

3 Kommentare

  1. 47

    Sin duda alguna. db.collection.stats().indexSizes es un documento incrustado en donde cada nombre de índice es una clave y el valor es el índice total tamaño en bytes :

    > db.test.stats()
    {
            "ns" : "test.test",
             <snip>
            "indexSizes" : {
                    "_id_" : 137904592,
                    "a_1" : 106925728
            },
            "ok" : 1
    }
  2. 8

    Este es un sencillo script para averiguar los índices que ocupan la mayoría del espacio en su toda la de la base de datos:

    var indexesArr = {}
    db.getCollectionNames().forEach(function(collection) {
       indexes = db[collection].stats().indexSizes
       for (i in indexes) indexesArr[collection + " - " + i] = indexes[i];
    });
    
    var sortable = [], x;
    for (x in indexesArr) sortable.push([x, indexesArr[x]])
    var pArr = sortable.sort(function(a, b) {return b[1] - a[1]})
    for (x in pArr) print( pArr[x][1] + ": " + pArr[x][0] );
  3. 3

    Listado de abajo el tamaño de los índices por cada recogida en un determinado db podemos utilizar el siguiente fragmento de código:

    use mydb;
    
    var collectionStats = []
    
    //Get the sizes
    db.getCollectionNames().forEach(function (collectionName) {
        var collection = db.getCollection(collectionName)
        var collectionIndexSize = collection.totalIndexSize();
        var indexSizeInMB = collectionIndexSize/(1024*1024)
        collectionStats.push({"collection": collectionName, "indexSizeInMB": indexSizeInMB})
    });
    
    //Sort on collection name or index size
    var reverse = true;
    var sortField = "indexSizeInMB";
    collectionStats.sort(function (a, b) {
        comparison = a[sortField] - b[sortField];
        if (isNaN(comparison)) comparison = a.collection.localeCompare(b.collection);
        if (reverse) comparison *= -1;
        return comparison;
    });undefined;
    
    //Print the collection stats
    collectionStats.forEach(function (collection) {
        print(JSON.stringify(collection));
    });
    
    //Total size of indexes
    print("Total size of indexes: " + db.stats()["indexSize"]/(1024*1024) + " MB");

    Puede cambiar el valor de las variables en el fragmento de arriba

    var reverse = true;
    var sortField = "indexSizeInMB";

    para cambiar el campo de clasificación y orden.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea