阿里狼 发表于 2018-10-27 10:53:01

MongoDB实战(6)命令行与进程

  一、命令行
  MongoDB shell 不仅仅是一个交互式的 shell,它也支持执行指定 javascript文件,也支持执行
  指定的命令片断。
  有了这个特性,就可以将 MongoDB 与 linux shell 完美结合,完成大部分的日常管理和维护
  工作。
  1 通过 eval 参数执行指定语句
  一般我们这样执行一条命令:
MongoDB shell version: 2.4.7  
connecting to: test
  
> db.stu.count()
  
10
  
>
  实际上我们也可以这样:通过命令行 eval 参数直接执行语句:

  2 执行指定文件中的内容
  如果涉及到很多的操作后,才能得到结果,那么用 eval 的方式来做的话是不可能完成的,
  那么更灵活的执行指定文件的方式就派上用场了。例如我们仍然要查看 test 库 stu 表中的记
  录数:
cat stu.js  
var total = db.stu.count();
  
printjson('total count of stu is:'+ total);
  
printjson('----------------');

  大家可以看到最终得到stu表的记录数10,那么一些不必要的说明性文字我们要是不希望出
  现该怎么办呢?

  通过指定 quiet 参数,即可以将一些登录信息屏蔽掉,这样可以让结果更清晰。
  二、进程控制
  DBA 经常要解决系统的一些查询性能问题,此时一般的操作习惯是先查看有哪些进程,
  然后将异常的进程杀掉,那么 MongoDB 是怎么样处理的呢?
  1 查看活动进程
  查看活动进程,便于了解系统正在做什么,以便做下一步判断
db.currentOp()  
{
  "inprog" : [
  {
  "opid" : 62475494,
  "active" : true,
  "secs_running" : 2,
  "op" : "getmore",
  "ns" : "local.oplog.rs",
  "query" : {
  },
  "client" : "192.168.129.21:33065",
  "desc" : "conn1938595",
  "threadId" : "0x40458940",
  "connectionId" : 1938595,
  "waitingForLock" : false,
  "numYields" : 0,
  "lockStats" : {
  "timeLockedMicros" : {
  "r" : NumberLong(83),
  "w" : NumberLong(0)
  },
  "timeAcquiringMicros" : {
  "r" : NumberLong(8),
  "w" : NumberLong(0)
  }
  }
  }
  ]
  
}
  字段说明:
  Opid: 操作进程号
  Op: 操作类型(查询,更新等)
  Ns: 命名空间, 指操作的是哪个对象
  Query: 如果操作类型是查询的话,这里将显示具体的查询内容
  lockType: 锁的类型,指明是读锁还是写锁
  2 结束进程
  如果某个异常是由于某个进程产生的,那么一般 DBA 都会毫不留情的杀掉这个罪魁祸首的
  进程,下面将是这操作
> db.killOp(1234/*opid*/)  注意:
  不要 kill 内部发起的操作,比如说 replica set 发起的 sync 操作等


页: [1]
查看完整版本: MongoDB实战(6)命令行与进程