美文网首页
【mongoDB】如何查询MongoDB库、表的数据和索引的大小

【mongoDB】如何查询MongoDB库、表的数据和索引的大小

作者: Bogon | 来源:发表于2024-06-26 15:23 被阅读0次

如何查询MongoDB 某个库 数据 、 索引 的大小?

要查看 MongoDB 中一个数据库中索引占用的内存大小,可以通过以下步骤:

  1. 连接到 MongoDB 数据库:使用 MongoDB 的命令行客户端或者 MongoDB Compass 连接到你的数据库。

  2. 选择目标数据库:确认你要查看索引大小的数据库。

  3. 运行命令查看索引大小:在 MongoDB 命令行或者 MongoDB Compass 的查询界面中,执行以下命令来查看索引占用的空间:

       > use testDB  
       db.collection.getIndexes().forEach(function(index) {
       var stats = db.collection.stats({indexDetails: true});
       var indexName = index.name;
       var indexSize = stats.indexDetails[indexName].fileSize;
       print(indexName + " : " + indexSize + " bytes");
   });
  • 替换 collection 为你要查看的具体集合名称。
  • 这个命令会遍历集合中的每个索引,并打印出每个索引的名称及其占用的磁盘空间大小(以字节为单位)。
  1. 分析输出:输出结果会显示每个索引的名称和相应的大小。这样你就可以了解每个索引占用了多少存储空间。

  2. 使用 db.stats() 获取整体数据库信息:如果你想要查看整个数据库的存储使用情况(包括数据和索引),可以使用 db.stats() 命令。其中包括 storageSizeindexSize 字段,分别表示数据文件和索引文件的总大小。

> use testDB
  var stats = db.stats();
   print("Storage size: " + stats.storageSize + " bytes");
   print("Index size: " + stats.indexSize + " bytes");

这个命令会打印出整个数据库的存储大小和索引大小。

通过上述步骤,你可以很方便地查看 MongoDB 中每个集合的索引占用的内存大小,以及整个数据库的索引占用情况。

如果你想将 MongoDB 中索引大小从字节转换为更大的单位(如GB),可以稍微修改上面的输出命令。下面是如何将输出转换为 GB 单位的示例代码:

> use testDB
   db.collection.getIndexes().forEach(function(index) {
    var stats = db.collection.stats({indexDetails: true});
    var indexName = index.name;
    var indexSizeBytes = stats.indexDetails[indexName].fileSize;
    var indexSizeGB = indexSizeBytes / (1024 * 1024 * 1024); // 转换为 GB
    print(indexName + " : " + indexSizeGB.toFixed(2) + " GB");
});

这段代码将索引大小从字节转换为 GB,并且保留小数点后两位以便更清晰地显示大小。

要将 MongoDB 数据库整体存储大小和索引大小从字节转换为 GB,你可以使用以下代码:


> use testDB
var stats = db.stats();
var storageSizeGB = stats.storageSize / (1024 * 1024 * 1024); // 转换为 GB
var indexSizeGB = stats.indexSize / (1024 * 1024 * 1024); // 转换为 GB

print("Storage size: " + storageSizeGB.toFixed(2) + " GB");
print("Index size: " + indexSizeGB.toFixed(2) + " GB");

在这段代码中:

  • stats.storageSizestats.indexSize 分别是数据库的存储大小和索引大小,单位是字节。
  • 通过除以 (1024 * 1024 * 1024) 将字节转换为 GB。
  • 使用 toFixed(2) 方法保留两位小数,以便更清晰地显示大小。

这样就可以输出 MongoDB 数据库的存储大小和索引大小,以 GB 为单位。

如何 输出MongoDB一个库中各个表的 数据 、索引 分别多大?

要输出一个 MongoDB 数据库中各个集合(不是表)的数据大小和索引大小,可以使用以下方法:

  1. 使用命令行工具或 Shell

    在已经登录 MongoDB 并切换到你要查看的数据库(例如 testDB)后,可以使用以下命令查看每个集合的数据大小和索引大小:

    db.getCollectionInfos().forEach(function(coll) {
        var stats = db.getCollection(coll.name).stats();
        print("Collection: " + coll.name);
        print("  Data Size: " + stats.size + " bytes");
        print("  Index Size: " + stats.totalIndexSize + " bytes");
    });
    

    这段代码会遍历数据库中的每个集合,对于每个集合,获取其统计信息并输出集合名、数据大小和索引大小。

  2. 使用 MongoDB Compass

    如果更倾向于图形用户界面,可以使用 MongoDB Compass 来查看集合的详细信息。在 Compass 中,选择你连接的数据库(如 testDB),然后找到要查看的集合。右键点击集合名,选择 "View Collection Statistics",它会展示数据大小和索引大小等信息。

  3. 通过 MongoDB Shell 手动查询

    如果想更详细地了解每个集合的索引信息,可以使用以下命令来手动查询索引信息:

    db.getCollectionInfos().forEach(function(coll) {
        var indexes = db.getCollection(coll.name).getIndexes();
        print("Collection: " + coll.name);
        print("  Indexes:");
        indexes.forEach(function(index) {
            print("    Name: " + index.name);
            print("    Size: " + index.key);
            print("    Storage Size: " + index.storageSize);
        });
    });
    

    这段代码会列出每个集合的所有索引,包括索引的名字、大小以及存储大小。

请根据实际需要选择适合你的方法来查看 MongoDB 数据库中各个集合的数据和索引大小。

如果要将 MongoDB 数据库中各个集合的数据大小和索引大小以 GB 为单位输出,可以稍作修改原来的代码来进行单位转换。以下是修改后的代码示例:

db.getCollectionInfos().forEach(function(coll) {
    var stats = db.getCollection(coll.name).stats();
    var dataSizeGB = stats.size / (1024 * 1024 * 1024); // Convert bytes to GB
    var indexSizeGB = stats.totalIndexSize / (1024 * 1024 * 1024); // Convert bytes to GB
    print("Collection: " + coll.name);
    print("  Data Size: " + dataSizeGB.toFixed(2) + " GB");
    print("  Index Size: " + indexSizeGB.toFixed(2) + " GB");
});

在这个修改后的代码中:

  • dataSizeGBindexSizeGB 分别计算了数据大小和索引大小,并将其转换为 GB。
  • toFixed(2) 方法用于保留小数点后两位,以提高输出的精确度。

通过这段代码,你可以在 MongoDB Shell 中获取每个集合的数据大小和索引大小,并以 GB 为单位进行输出。

登录MongoDB后 ,一键输出各个库的3个数据:数据库的总大小、 数据大小、索引大小

在 MongoDB 中,可以使用以下命令来输出各个数据库的总大小、数据大小和索引大小的信息。请确保在 MongoDB 的 shell 环境中执行这些命令。

// 连接到 MongoDB 数据库
use admin;

// 获取所有数据库的列表
var dbs = db.adminCommand({ listDatabases: 1 }).databases;

// 遍历每个数据库,输出数据库的总大小、数据大小和索引大小
dbs.forEach(function(database) {
    var dbName = database.name;
    var dbStats = db.getSiblingDB(dbName).stats();
    print("Database: " + dbName);
    print("\tTotal Size: " + dbStats.storageSize + " bytes");
    print("\tData Size: " + dbStats.dataSize + " bytes");
    print("\tIndex Size: " + dbStats.indexSize + " bytes");
    print();
});

解释和步骤说明:

  1. 连接到 MongoDB 数据库: 使用 use admin; 命令连接到 admin 数据库,因为这里的操作需要一些 admin 权限(具体取决于 MongoDB 的安全设置)。

  2. 获取数据库列表: 使用 listDatabases 命令获取所有数据库的列表。这个命令返回一个包含数据库信息的数组。

  3. 遍历每个数据库: 使用 JavaScript 的 forEach 函数遍历数据库数组中的每个数据库。

  4. 获取数据库的统计信息: 对于每个数据库,使用 db.getSiblingDB(dbName).stats() 来获取数据库的统计信息。其中 dbName 是当前数据库的名称。

  5. 输出信息: 对于每个数据库,输出其名称以及总大小、数据大小和索引大小。

这些命令会输出每个数据库的信息,包括总大小(storageSize)、数据大小(dataSize)和索引大小(indexSize)。确保在 MongoDB 的 shell 环境中执行这些命令,以便正确获取和显示数据库信息。

如果需要将输出的大小单位从字节(bytes)转换为更大的单位(如GB),可以在输出时进行单位转换。在 MongoDB 的 shell 环境中,可以通过以下方式来实现:

use admin;

var dbs = db.adminCommand({ listDatabases: 1 }).databases;

dbs.forEach(function(database) {
    var dbName = database.name;
    var dbStats = db.getSiblingDB(dbName).stats();
    print("Database: " + dbName);
    print("\tTotal Size: " + (dbStats.storageSize / (1024 * 1024 * 1024)).toFixed(2) + " GB");
    print("\tData Size: " + (dbStats.dataSize / (1024 * 1024 * 1024)).toFixed(2) + " GB");
    print("\tIndex Size: " + (dbStats.indexSize / (1024 * 1024 * 1024)).toFixed(2) + " GB");
    print();
});

解释:

  1. 单位转换:

    • MongoDB 的 stats() 方法返回的大小是以字节(bytes)为单位的。要将字节转换为GB,我们将其除以 1024 * 1024 * 1024,即 1024 的三次方,这是将字节转换为GB的标准方法。
    • 使用 .toFixed(2) 方法保留小数点后两位,以便输出更精确的 GB 数值。
  2. 输出: 修改了输出语句,将转换后的 GB 数值与相应的大小类型(总大小、数据大小、索引大小)一起输出。

这样,执行以上代码将输出每个数据库的总大小、数据大小和索引大小,并以GB为单位表示。

相关文章

  • mongodb常用操作

    多条件查询 单条件查询 排序 查看集合索引 添加单个索引 添加多个索引 查看mongodb表大小 stats() ...

  • MongoDB 索引和 explain 的使用

    索引基础 索引是对数据库表中一列或多列的值进行排序的一种结构,可以让我们查询数据库变得更快。MongoDB 的索引...

  • 【mongoDB】mongoDB组合索引创建

    mongoDB索引创建 testDB库,testColl表索引: 转换为创建语句: 参考 MongoDB 教程ht...

  • MongoDB 索引 和 explain 的使用

    一、索引基础 索引是对数据库表中一列或多列的值进行排序的一种结构,可以让我们查询数据库变得更快。MongoDB 的...

  • mongdb常用语句

    一: mongodb的常用语句 查询库、查询表show dbs -查询所有的数据库show connection...

  • MongoDB积累

    一、mongodb通过工具连接 二、mongodb查询 1.mongodb数据库查询 一般查询:db.collec...

  • SqlServer表、日志查询

    数据库空间大小 数据库空间大小检查索引是否丢失 查询某个表的列名称、说明、备注、类型等 被锁的表以及如何解锁 查询...

  • NoSQL

    关系型数据库: 超过500万行,30列,需要分表分库。 MongoDB优势: 1、完全的索引支持,适合实时查询。2...

  • 快速掌握 MongoDB 数据库

    学习教程:如何快速掌握MongoDB数据库 (课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库...

  • MySQL数据和索引占用空间查询

    MySQL数据和索引占用空间查询 查询所有数据库占用磁盘空间大小的SQL语句 查询单个库中所有表磁盘占用大小的SQ...

网友评论

      本文标题:【mongoDB】如何查询MongoDB库、表的数据和索引的大小

      本文链接:https://www.haomeiwen.com/subject/ygrscjtx.html