mongodb的使用及常用命令归纳

作者:dante_wd 发布时间:2019-09-27 17:28:55

mongodb在服务器上安装完之后,一条命令启动服务就算是完成搭建

/usr/local/mongodb/bin/mongod --dbpath=/usr/local/mongodb/data --logpath=/usr/local/mongodb/logs --logappend --port=27017 --fork


之后配置登录Mongo的快捷入口

ln -s /usr/local/mongodb/bin/mongo /usr/bin/


这样之后可以直接输入mongo命令连接当前数据库


image.png

之后就是数据库操作:


show dbs;

use 库名;

db.表名.find(); (查询表数据)

db.表名.find().sort({'_id':-1});  (查询表数据,按_id倒序)

db.表名.find().sort({'_id':-1}).limit(2); (查询表数据,按_id倒序,只拿最新两条数据)

db.表名.find().sort({'_id':-1}).limit(2).pretty(); (查询表数据,按_id倒序,只拿最新两条数据,格式化展示)


image.png

如图,查看测试支付回调的日志数据。


创建表:

> db.createCollection("test");

{ "ok" : 1 }


创建数据库:

> use test;  (自动创建库)

switched to db test

> db.createCollection("test"); (建表,之后可以show看到数据库)

{ "ok" : 1 }

> show dbs;

test      0.000GB


删除数据库:

> use test;

switched to db test

> db.dropDatabase();

{ "dropped" : "test", "ok" : 1 }

(需要先进到某数据库,在库里进行drop)


MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。

MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。

对于频繁迭代,业务内容变动多,又需要数据存储,方便查询的数据需要来讲,非常适合。而且加载




mongoDb的持久化:

持久化为了保证数据永久保存不丢失。MongoDB具有高度可配置的持久化设置,从完全没有任何保证到完全持久化。

mongodb与mysql不同,mysql的每一次更新操作都会直接写入硬盘,但是mongo不会,做为内存型数据库,数据操作会先写入内存,然后再会持久化到硬盘中去,那么mongo是如何持久化的呢

mongodb在启动时,专门初始化一个线程不断循环(除非应用crash掉),用于在一定时间周期内来从defer队列中获取要持久化的数据并写入到磁盘的journal(日志)和mongofile(数据)处,当然因为它不是在用户添加记录时就写到磁盘上,所以按mongodb开发者说,它不会造成性能上的损耗,因为看过代码发现,当进行CUD操作时,记录(Record类型)都被放入到defer队列中以供延时批量(groupcommit)提交写入,但相信其中时间周期参数是个要认真考量的参数,系统为90毫秒,如果该值更低的话,可能会造成频繁磁盘操作,过高又会造成系统宕机时数据丢失过。



mongodb内存使用

1.热数据

这一点是SQL和nosql之间的巨大差距,将热数据存在内存相当于自带cache,若wiredtigercache大小控制合理,此处内存性价比相当高。

2.索引

跟热数据同样

3.连接所消耗内存

这里算是与SQL基本相同的一部分

二.监控

1.wiredtigercache

2.mongodb所占用内存

3.mongodb读取数据与IO数据

三.优化

1.热数据

上面说此处占用内存为cache,可以通过wiredtigercache进行上限的调节,与memcache或redis做缓存时候调节相同,将命中和大小控制在合理范围

2.索引

mongodb会将全部索引读入内存中,所以这里优化相当重要,

建议花精力去整理索引,如果可以做到索引恰好覆盖热数据为最佳,

四.其他注意事项

1.杜绝依靠重启来释放内存,这时释放掉的是热数据,得不偿失

2.可以禁止swap,

3.不要将mongodb与其他吃内存的服务部署到同一机器上

4.重视对mongodb内存监控,避免oom

5.重视oplog,oplog大小应定期调整,若oplog过小,对热数据部分将是灾难

6.关闭NUMA

7.安装在x64机器上(貌似是句废话)

8.根据wiredtigercache,索引,连接,来调整内存

9.有条件最好SSD

10.找一个懂mongodb的人解决具体问题,不要遇到问题就说mongodb不好

 


关于我 |  合作伙伴 |  用户注册 |  帮助中心 |  版权声明