shell查询中文数据ora-01756_数据库 Profiler

参考官方文档:

Database Profiler​docs.mongodb.com
f8e9593e9b494d520d327c7a7056ffa9.png


数据库探查器收集有关正在运行的mongod实例执行的数据库命令的详细信息。 这包括CRUD操作以及配置和管理命令。 分析器将收集的所有数据写入system.profile集合,即admin数据库中的capped集合。
默认情况下,探查器处于关闭状态。 您可以在每个数据库或每个实例的基础上,在多个分析级别上启用分析器。profiling 级别
0:profile 是关闭的,并不会收集任何数据。这是默认的级别
1:探查器收集的数据用于超过slowms值的操作
2:profile 收集所有操作的数据启用和配置数据库profiling
您可以从mongo shell或通过驱动程序使用 profile命令启用数据库分析。 本节将介绍如何从mongo shell执行此操作。 如果要从应用程序中控制探查器,请参阅驱动程序文档。
启用分析时,还可以设置分析级别。 分析器将数据记录在system.profile集合中。 在为该数据库启用分析后,MongoDB会在数据库中创建system.profile集合。
要启用分析并设置分析级别,请在mongo shell中使用db.setProfilingLevel()帮助程序,并将分析级别作为参数传递。 例如,要为所有数据库操作启用分析,请考虑mongo shell中的以下操作:
db.setProfilingLevel(2)
shell返回一个显示上一级profiling的文档。 “ok”:1个键值对表示操作成功:
{ "was" : 0, "slowms" : 100, "sampleRate" : 1.0, "ok" : 1 }为慢操作指定阈值
要更改慢速操作阈值,请使用以下方法之一指定所需的阈值:

  • 使用profile命令或db.setProfilingLevel()shell帮助方法设置slowms的值。
  • 在启动时从命令行设置--slowms的值。
  • 在配置文件中设置slowOpThresholdMs的值。
    默认情况下,慢速操作阈值为100毫秒。 分析级别为1的数据库将分析慢于阈值的操作。
    例如,以下代码将当前数据库的分析级别设置为1,并将mongod实例的慢速操作阈值设置为20毫秒:
    db.setProfilingLevel(1, { slowms: 20 })
    重要:
    慢操作阈值适用于mongod实例中的所有数据库。 它由数据库分析器和诊断日志使用,应设置为最高有用值以避免性能下降。描述慢速操作的随机样本
    要仅分析所有慢速操作的随机采样子集,请使用以下方法之一指定所需的采样率:
  • 使用profile命令或db.setProfilingLevel()shell辅助方法设置sampleRate的值。
  • 在启动时从命令行为mongod设置--slowOpSampleRate的值或为mongos设置--slowOpSampleRate的值。
  • 在配置文件中设置slowOpSampleRate的值。
    默认情况下,sampleRate设置为1.0,表示所有慢速操作都已分析。 当sampleRate设置在0和1之间时,具有分析级别1的数据库将仅根据sampleRate 随机采样的慢速操作百分比来profile。
    例如,以下方法将当前数据库的分析级别设置为1,并将分析器设置为对所有慢速操作的42%进行采样:
    db.setProfilingLevel(1, { sampleRate: 0.42 })
    重要:
    采样率值适用于mongod实例中的所有数据库。 它由数据库探查器和系统日志使用
    当logLevel设置为0时,MongoDB以slowOpSampleRate确定的速率记录诊断日志的慢速操作。 从MongoDB 4.0.6开始,无论采样率如何,副本集的副本都会记录所有超过慢速操作阈值的oplog条目消息。
    在较高的logLevel设置下,所有操作都显示在诊断日志中,而不考虑其延迟,但存在以下异常:辅助节点记录慢速oplog条目。 辅助节点仅记录慢速oplog条目; 增加logLevel不会记录所有oplog条目。
    从MongoDB 4.0开始,您可以使用db.setProfilingLevel()为mongos配置slowms和sampleRate。 slowms和sampleRate配置设置仅影响诊断日志,而不影响profiler,因为mongos上没有profiling。检查profiling 等级
    要查看分析级别,请从mongo shell发出以下命令:
    db.getProfilingStatus()
    shell返回类似于以下内容的文档:
    { "was" : 0, "slowms" : 100, "sampleRate" : 1.0, "ok" : 1 }
    was 字段表明了当前profiling 级别
    slowms字段指示操作时间阈值(以毫秒为单位),超过该阈值操作被认为是慢的。
    sampleRate字段指示应分析的慢速操作的百分比。
    要仅返回分析级别,请在mongo shell中使用db.getProfilingLevel()帮助程序,如下所示:
    db.getProfilingLevel()关闭 profiling
    在mongo shell 中使用下列帮助程序来禁用profiling:
    db.setProfilingLevel(0)
    为了在测试环境中进行开发,可以为整个mongod实例启用数据库分析。 分析级别适用于mongod实例提供的所有数据库。
    要为mongod实例启用分析,请在启动时将以下选项传递给mongod。
    mongod --profile 1 --slowms 15 --slowOpSampleRate 0.5
    或者,您可以在配置文件中指定operationProfiling。
    这将分析级别设置为1,将慢速操作定义为持续时间超过15毫秒的操作,并指定仅应分析50%的慢速操作。
    当logLevel设置为0时,slowms和slowOpSampleRate也会影响将哪些操作记录到诊断日志中.slowms和slowOpSampleRate也可用于配置mongos的诊断日志记录。数据库分析和分片
    您无法在mongos实例上启用分析。 要在分片群集中启用分析,必须为群集中的每个mongod实例启用分析。
    但是,从MongoDB 4.0开始,您可以在mongos上设置--slowms和slowOpSampleRate,以便为慢速操作配置诊断日志。查看profiler 数据
    数据库分析器记录有关system.profile集合中的数据库操作的信息。
    要查看分析信息,请查询system.profile集合。
    您可以使用$comment将数据添加到查询谓词,以便更轻松地分析来自探查器的数据。profile 数据查询例子
    要返回system.profile集合中最新的10个日志条目,请运行类似以下的查询:
    db.system.profile.find().limit(10).sort( { ts : -1 } ).pretty()
    要返回除命令操作($ cmd)以外的所有操作,请运行类似于以下内容的查询:
    db.system.profile.find( { op: { $ne : 'command' } } ).pretty()
    要返回特定集合的操作,请运行类似于以下内容的查询。 此示例返回mydb数据库的test集合中的操作:
    db.system.profile.find( { ns : 'mydb.test' } ).pretty()
    要返回慢于5毫秒的操作,请运行类似于以下内容的查询:
    db.system.profile.find( { millis : { $gt : 5 } } ).pretty()
    要从特定时间范围返回信息,请运行类似于以下内容的查询:
    db.system.profile.find({
    ts : {
    $gt: new ISODate("2012-12-09T03:00:00Z"),
    $lt: new ISODate("2012-12-09T03:40:00Z")
    }
    }).pretty()
    以下示例查看时间范围,从输出中抑制user字段以使其更易于阅读,并根据每个操作运行的时间对结果进行排序:
    db.system.profile.find({
    ts : {
    $gt: new ISODate("2011-07-12T03:00:00Z"),
    $lt: new ISODate("2011-07-12T03:40:00Z")
    }
    }, { user: 0 }).sort( { millis: -1 } )显示五个最新事件
    在启用了性能分析的数据库上,mongo shell中的show profile helper显示最近执行至少1毫秒的5个操作。 show profile来自mongo shell,如下所示:
    show profileProfiler开销
    启用后,分析对性能的影响很小。 system.profile集合是一个capped集合,默认大小为1兆字节。 此大小的集合通常可以存储数千个配置文件,但是某些应用程序可能会在每个操作中使用更多或更少的profiling 数据。更改主节点上system.profile集合的大小
    要变更system.profile 集合的大小,你必须:
  • 禁用分析。
  • 删除system.profile集合。
  • 创建一个新的system.profile集合。
  • 重新启用分析。
    例如,要创建一个4000000字节的新system.profile集合,请在mongo shell中使用以下顺序操作:
    db.setProfilingLevel(0)
    db.system.profile.drop()
    db.createCollection( "system.profile", { capped: true, size:4000000 } )
    db.setProfilingLevel(1)更改辅助节点上system.profile集合的大小
    要更改辅助服务器上system.profile集合的大小,必须停止辅助服务器,将其作为独立服务器运行,然后执行上述步骤。 完成后,重新启动独立服务器作为副本集的成员。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值