上一篇关于MongoDB的8个脚本的帖子火了,好多人入群差不多一上午20个吓了我一跳,看来MongoDB的号召力还是比较大,很多人还是有一些MongoDB的困扰和问题的,今天咱们就来一个疑难杂症的解决方案,并且给大家一个解决的脚本。
瞬间成为MongoDB专家,8个脚本都写好了,一用一个不吱声
(顺便说一句,认为脚本有问题的,进群问,不是脚本的问题,是有的脚本为了安全,有的地方你的自己稍微改几个字)
今天的问题是,如果有开发问你,MongoDB插入速度慢,你怎么解决??
说到这个问题,可能很多人都会有疑问,MongoDB插入慢,不会呀MongoDB插入数据很快呀,怎么会慢,是的MongoDB插入(更新)数据在普通情况上是很快的,不会有什么问题,但你是否留意过以下集中情况。
1 数据库在频繁的进行大量数据的插入,而你的数据插入就会被影响,在同一个collecion。

2 数据库在进行查询(慢查询),而你要进行数据的更新,这二者如果是同一条数据,就有产生锁
3 副本集中插入数据或更新数据采用了多节点确认的情况或本身副本集中的节点较多,比如5个7个等,而且你选择了write concern,或者确认多个节点写成功后,才能commit的情况下,那必然是慢。
通用的方案中,我们一般采用Mongotop, 来观察MongoDB的总的读取和写入的时间
但是这样的方案并不解决问题,主要是开发会问到底因为什么慢??你凭上面的东西能说清楚吗?还是你要看慢查询,慢查询解决的了问题吗???
当然这里有人说,我们用mnogostat 里面有locked 的这个百分比,说明在监控中这个数据库有多长时间在锁定的状态,当然这是一个方案,但参见我们上面的问题,开发问到底是什么锁,锁定的,怎么锁定的。
你这时就傻眼了,不知道怎么办了,这个帖子的就在这里等你呢, 通过下面的脚本,实时监控你的数据库到底是哪个操作在被锁定,锁定了什么,怎么锁定的,什么锁锁定的。
下图是脚本执行时的打印,一秒打印一次,如果在一秒中有任何的写入,查询被锁,都会打印出来。脚本是通过Node.js 撰写的,如果对这个部分敢兴趣,Node,js 如何安装等,可以参考,下面文章,里面有一部分关于如何安装Node.JS 和如何运行,当然PG 运行Node.js比MongoDB 要麻烦一些,终究MongoDB 原生支持Node.js.
PostgreSQL 远程管理越来越简单,6个自动化脚本开胃菜


这个脚本可以马上投入使用,且来探测你系统中是否有锁频繁的发生,且哪个语句被影响了。
Austindatabases 公众号,主要围绕数据库技术(PostgreSQL, MySQL, Mongodb, Redis, SqlServer,PolarDB, Oceanbase 等)和职业发展,国外数据库大会音译,国外大型IT信息类网站文章翻译,等,希望能和您共同发展。



版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/168218.html