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 Comentarios

  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.

Dejar respuesta

Please enter your comment!
Please enter your name here