Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MongoDB system.profile collection:没有“的数据”;插入“;操作?_Mongodb_Logging_Profiling - Fatal编程技术网

MongoDB system.profile collection:没有“的数据”;插入“;操作?

MongoDB system.profile collection:没有“的数据”;插入“;操作?,mongodb,logging,profiling,Mongodb,Logging,Profiling,我已经配置了我的MongoDB 2.0.2实例(更新:在v2.2.0实例中也尝试了这一点),将所有操作记录到system.profile集合(即db.setProfilingLevel(2))中,并试图准确查看应用程序在为新文档调用save()时插入的数据 我可以在system.profile集合中看到“插入”操作,但它不包括正在插入的数据。为什么呢 相反,记录在system.profile中的更新操作有一个显示数据的“updateobj”属性 下面是一个来自2.2.0实例的示例。如您所见,概要

我已经配置了我的MongoDB 2.0.2实例(更新:在v2.2.0实例中也尝试了这一点),将所有操作记录到
system.profile
集合(即
db.setProfilingLevel(2)
)中,并试图准确查看应用程序在为文档调用save()时插入的数据

我可以在
system.profile
集合中看到“插入”操作,但它不包括正在插入的数据。为什么呢

相反,记录在
system.profile
中的更新操作有一个显示数据的“updateobj”属性

下面是一个来自2.2.0实例的示例。如您所见,概要文件日志包含一个更新条目,其中包含“updateObj”数据。但是,插入没有任何关于插入内容的信息

> use test;
switched to db test
> db.getProfilingStatus();
{ "was" : 2, "slowms" : 100 }
> show collections;
cartoons
system.indexes
system.profile
> db.foobar.insert({ "blah": true });
> db.foobar.update({ "blah": true }, { $set: { blerg: 1 } });
> db.system.profile.find({ ns:"test.foobar" });
{
  "ts": ISODate("2012-09-25T20:37:40.287Z"),
  "op": "insert",
  "ns": "test.foobar",
  "keyUpdates": 0,
  "numYield": 0,
  "lockStats": {
    "timeLockedMicros": {
      "r": NumberLong(0),
      "w": NumberLong(2028)
    },
    "timeAcquiringMicros": {
      "r": NumberLong(0),
      "w": NumberLong(10)
    }
  },
  "millis": 2,
  "client": "127.0.0.1",
  "user": ""
}{
  "ts": ISODate("2012-09-25T20:38:11.454Z"),
  "op": "update",
  "ns": "test.foobar",
  "query": {
    "blah": true
  },
  "updateobj": {
    "$set": {
      "blerg": 1
    }
  },
  "nscanned": 1,
  "moved": true,
  "nmoved": 1,
  "nupdated": 1,
  "keyUpdates": 0,
  "numYield": 0,
  "lockStats": {
    "timeLockedMicros": {
      "r": NumberLong(0),
      "w": NumberLong(1797)
    },
    "timeAcquiringMicros": {
      "r": NumberLong(0),
      "w": NumberLong(9)
    }
  },
  "millis": 1,
  "client": "127.0.0.1",
  "user": ""
}

为最初误导您表示歉意,事实证明这是故意的(我最初的回答与这是一个记录慢操作的bug有关)。不这样做的背后的想法是,通过启用此选项,您只需将写入负载自动增加一倍,因为您实际上只需将相同的信息(实际上多一点)写入两次

由于分析的思想通常是解决性能问题,因此这并没有作为默认实现。但是,有人要求将其作为一种选择:


正如您所看到的,它还没有被安排为一个版本,但概述为什么这会有用的投票和评论在决定实施什么时会有所帮助。

什么版本?2.0.x的早期版本有一个bug,这意味着慢操作没有记录其查询详细信息-在以后的builds2.0.2中修复。我将评测级别设置为“2”,如果我理解正确的话,这意味着它会记录所有内容——不仅仅是缓慢的操作……2.0.2肯定有我所想的bug——我认为它在2.0.4左右得到了修复。这两种方法的日志机制都是相同的,因此在这里也很容易发生(这是在慢速操作日志记录中首先注意到的)。能否尝试升级到2.0.7,然后查看查询是否出现?将在下周升级并报告-谢谢提示!抱歉,我花了这么长时间来跟进。。。我升级到Mongo 2.2.0,并确认问题仍然存在(请参阅上面更新的问题和完整示例)。