开头还是介绍一下群,如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, OceanBase, Sql Server等有问题,有需求都可以加群群内有各大数据库行业大咖,可以解决你的问题。加群请联系 liuaustin3 ,(共2500人左右 1 + 2 + 3 + 4 +5 + 6 + 7)(1 2 3 4 5 群均已爆满,6群超过450人关闭自由申请,新人进7群,准备开8群)
上一篇关于MongoDB的8个脚本的帖子火了,好多人入群差不多一上午20个吓了我一跳,看来MongoDB的号召力还是比较大,很多人还是有一些MongoDB的困扰和问题的,今天咱们就来一个疑难杂症的解决方案,并且给大家一个解决的脚本。
瞬间成为MongoDB专家,8个脚本都写好了,一用一个不吱声
(顺便说一句,认为脚本有问题的,进群问,不是脚本的问题,是有的脚本为了安全,有的地方你的自己稍微改几个字)
今天的问题是,如果有开发问你,MongoDB插入速度慢,你怎么解决??
说到这个问题,可能很多人都会有疑问,MongoDB插入慢,不会呀MongoDB插入数据很快呀,怎么会慢,是的MongoDB插入(更新)数据在普通情况上是很快的,不会有什么问题,但你是否留意过以下集中情况。
1 数据库在频繁的进行大量数据的插入,而你的数据插入就会被影响,在同一个collecion。
2 数据库在进行查询(慢查询),而你要进行数据的更新,这二者如果是同一条数据,就有产生锁
3 副本集中插入数据或更新数据采用了多节点确认的情况或本身副本集中的节点较多,比如5个7个等,而且你选择了write concern,或者确认多个节点写成功后,才能commit的情况下,那必然是慢。
通用的方案中,我们一般采用Mongotop, 来观察MongoDB的总的读取和写入的时间
ns total read write
application.phonenumber 100ms 60ms 40ms
但是这样的方案并不解决问题,主要是开发会问到底因为什么慢??你凭上面的东西能说清楚吗?还是你要看慢查询,慢查询解决的了问题吗???
当然这里有人说,我们用mnogostat 里面有locked 的这个百分比,说明在监控中这个数据库有多长时间在锁定的状态,当然这是一个方案,但参见我们上面的问题,开发问到底是什么锁,锁定的,怎么锁定的。
你这时就傻眼了,不知道怎么办了,这个帖子的就在这里等你呢, 通过下面的脚本,实时监控你的数据库到底是哪个操作在被锁定,锁定了什么,怎么锁定的,什么锁锁定的。
下图是脚本执行时的打印,一秒打印一次,如果在一秒中有任何的写入,查询被锁,都会打印出来。脚本是通过Node.js 撰写的,如果对这个部分敢兴趣,Node,js 如何安装等,可以参考,下面文章,里面有一部分关于如何安装Node.JS 和如何运行,当然PG 运行Node.js比MongoDB 要麻烦一些,终究MongoDB 原生支持Node.js.
PostgreSQL 远程管理越来越简单,6个自动化脚本开胃菜
[mongo@mongo4 ~]$ mongosh mongodb://root:1234.Com@192.168.198.100:27027/admin --file checklock.js
[2021-12-14T21:54:10.374Z] No operations waiting for lock.
[2021-12-14T21:54:11.381Z] No operations waiting for lock.
[2021-12-14T21:54:12.410Z] No operations waiting for lock.
[2021-12-14T21:54:13.426Z] No operations waiting for lock.
[2021-12-14T21:54:14.441Z] No operations waiting for lock.
[2021-12-14T21:54:15.464Z] No operations waiting for lock.
[2021-12-14T21:54:16.481Z] No operations waiting for lock.
[2021-12-14T21:54:17.498Z] No operations waiting for lock.
[2021-12-14T21:54:18.517Z] No operations waiting for lock.
[2021-12-14T21:54:19.530Z] No operations waiting for lock.
[2021-12-14T21:54:20.552Z] No operations waiting for lock.
[2021-12-14T21:54:21.569Z] No operations waiting for lock.
[2021-12-14T21:54:22.613Z] No operations waiting for lock.
[2021-12-14T21:54:23.635Z] No operations waiting for lock.
[2021-12-14T21:54:24.653Z] No operations waiting for lock.
[2021-12-14T21:54:25.665Z] No operations waiting for lock.
[2021-12-14T21:54:26.677Z] No operations waiting for lock.
^CStopping execution...MongoshInterruptedError: execution was interrupted、
var db = connect('mongodb://root:1234.Com@192.168.198.100:27027/admin');
function captureWaitingForLockOperations() {
while (true) {
var ops = db.adminCommand({ currentOp: 1, "waitingForLock": true });
var timestamp = new Date().toISOString();
if (ops.inprog.length > 0) {
print("[" + timestamp + "] Waiting for Lock Operations Detected:");
ops.inprog.forEach(function(op) {
printjson({
opid: op.opid,
ns: op.ns,
query: op.query,
client: op.client,
lockType: op.lockType,
secs_running: op.secs_running,
waitingForLock: op.waitingForLock
});
});
} else {
print("[" + timestamp + "] No operations waiting for lock.");
}
sleep(1000);
}
}
captureWaitingForLockOperations();
这个脚本可以马上投入使用,且来探测你系统中是否有锁频繁的发生,且哪个语句被影响了。
置顶文章:
用MySql不是MySQL, 不用MySQL都是MySQL 横批 哼哼哈哈啊啊
PostgreSQL 远程管理越来越简单,6个自动化脚本开胃菜
撕逼!PostgreSQL 和 MongoDB 开撕,MySQL却躺枪
MongoDB 系统IOPS 告警系统处于崩溃,优化语句从1秒优化到1毫秒解决问题
MongoDB 入门教学贴 从术语到操作 (约束怎么建立 内部培训贴)
MongoDB 谨献给说MongoDB 这不好那不好的“古董” -- 发展与演进,从3 到 7 的卓越变化
专访唐建法-从MongoDB中国第一人到TapData掌门人的故事
往期热门文章:
微软 “爱” 上PostgreSQL, PG “嫁给” 微软!
PostgreSQL 软肋 “最大连接数” 到底是不是问题?
阿里云数据库--市场营销聊胜于无--3年的使用感受与反馈系列
阿里云数据库产品 对内对外一样的卷 --3年阿里云数据库的使用感受与反馈系列
阿里云数据库使用感受--客户服务问题深入剖析与什么是廉价客户 --3年的使用感受与反馈系列
阿里云数据库使用感受--操作界面有点眼花缭乱 --3年的使用感受与反馈系列
PolarDB 最近遇到加字段加不上的问题 与 使用PolarDB 三年感受与恳谈
PostgreSQL 稳定性平台 PG中文社区大会--杭州来去匆匆
MySQL 的SQL引擎很差吗?由一个同学提出问题引出的实验
临时工访谈:从国产数据库 到 普罗大众的产品 !与在美国创业软件公司老板对话
感谢 老虎刘 刘老师 对 5月20日 SQL 问题纠正贴 ---PostgreSQL 同一种SQL为什么这样写会提升45%性能
PostgreSQL 同一种SQL为什么这样写会提升45%性能 --程序员和DBA思维方式不同决定
PostgreSQL 熊灿灿一句话够学半个月 之 KILL -9
临时工访谈:庙小妖风大-PolarDB 组团镇妖 之 他们是第一 (阿里云组团PK笔者实录)
临时工访谈:金牌 “女” 销售从ORACLE 转到另类国产数据库 到底 为什么?
临时工访谈:无名氏意外到访-- 也祝你好运(管理者PUA DBA现场直播)
截止今天共发布 1234篇文章