有关MongoDB最佳实践的问题

时间:2013-08-20 12:16:41

标签: mongodb

我正在使用mongodb 1.6进行制作。

我有以下问题

有人可以帮助我如何找到这些问题的答案?

  1. 如何在mongodb中识别需要更长时间才能运行的查询?
  2. 如何查看MongoDB中的页面错误?
  3. 什么是这个RAID概念,我怎么知道我正在使用什么RAID? (因为它表示如果RAID为10则性能会更高)
  4. 如何知道MongoDB中工作集的大小??
  5. 如何在mongodb中查看实例的负载,因为它表示

      

    如果您的实例显示负载超过65%,则应考虑扩展。在正常操作期间,您的负载应始终低于此阈值

  6.   

2 个答案:

答案 0 :(得分:1)

  1. MongoDB logging all queries
  2. 中回答
  3. 可以使用serverStatus命令
  4. 找到有关页面错误的信息
  5. RAID就是RAID。 RAID 10,条带化和镜像的组合通常被认为是数据库存储的更好选择,因为它结合了速度和可靠性。 RAID支持由硬件控制器(如戴尔的PERC或HP的Smartarray系列控制器)提供 - 通常称为硬件RAID,或者由Linux md提供。后者通常被称为软件RAID。
  6. 工作集信息仅为available from 2.4,因此您需要升级(为什么仍然使用1.6)?
  7. 使用环境附带的监控工具来检查负载。

答案 1 :(得分:0)

首先,您可能需要考虑升级到较新的MongoDB版本。目前的版本是2.4,1.6很旧。下面我将介绍当前MongoDB版本中的功能。它们在1.6中可能存在也可能不存在。

  1. MongoDB将超过给定阈值(默认为100毫秒)的查询记录到mongod的主日志文件中。您可以使用db.setProfilingLevel()--slowms命令行选项将该阈值设置为其他值。
  2. 使用mongostat命令。
  3. RAID表示"Redundant Array of Independent Disks"。这意味着您不是在与单个磁盘通信,而是在一组磁盘上配置为以某种模式对数据进行条带化/复制。该模式按RAID一词后面的数字分类。 MongoDB的推荐模式是RAID 10。
  4. 工作集包含应用程序经常需要的那些文档。虽然db.serverStatus()命令在2.4中提供了对它的估计,但是没有办法准确地“测量”工作集。目标是mongod可以将所有正常工作的文档直接保存在mongod的内存中。你应该很少(如果有的话)在mongostat中看到页面错误。如果这样做,则表明您的工作集不适合记忆。
  5. 在Unix系统上,您可以使用top或正常运行时间来报告加载因子。它不应该高于你的盒子CPU的数量0.65 *。