面试题答案
一键面试在MongoDB中,可以使用以下命令获取当前数据库的连接数统计数据:
db.serverStatus()
命令- 使用方法:在MongoDB shell中直接执行
db.serverStatus()
。 - 返回数据结构:这是一个包含服务器各种状态信息的文档(类似JSON格式)。
- 与连接数相关的主要字段含义:
connections
字段:是一个子文档,包含连接相关的统计信息。current
:当前打开的连接数。available
:当前可用于新连接的可用连接数(仅在启用连接池时相关)。totalCreated
:自服务器启动以来创建的总连接数。
- 使用方法:在MongoDB shell中直接执行
例如,执行db.serverStatus()
后,可能看到类似如下结构(仅展示连接数相关部分):
{
"connections" : {
"current" : 10,
"available" : 90,
"totalCreated" : 100
}
}
db.stats()
命令:该命令主要用于获取数据库级别的统计信息,虽然不直接显示连接数,但在服务器整体性能分析中可作为参考。- 使用方法:在MongoDB shell中对特定数据库执行
db.stats()
,例如use mydb; db.stats()
。 - 返回数据结构:也是一个文档,包含数据库大小、文档数量、索引等统计信息。
- 主要字段含义(与连接数间接相关):
collections
:数据库中的集合数量。集合数量较多可能间接反映连接操作频繁程度。objects
:数据库中的文档数量。文档数量多可能意味着需要更多连接来处理数据。dataSize
:数据库数据占用的总大小。数据量大可能对连接数及连接资源有更高要求。
- 使用方法:在MongoDB shell中对特定数据库执行
例如,执行db.stats()
后可能看到如下结构(部分字段):
{
"db" : "mydb",
"collections" : 5,
"objects" : 1000,
"dataSize" : 102400
}
serverStatus.globalLock
部分:db.serverStatus()
返回结果中的globalLock
字段也与连接操作有一定关系。globalLock
字段含义:totalTime
:服务器启动以来的总运行时间(以微秒为单位)。lockTime
:全局锁被持有(锁定)的总时间(以微秒为单位)。连接数过多可能导致全局锁竞争加剧,lockTime
增加。
例如:
{
"globalLock" : {
"totalTime" : 10000000,
"lockTime" : 1000000
}
}