MongoDB 8.0这个新功能碉堡了,比商业数据库还牛

MongoDB 8.0这个新功能碉堡了,比商业数据库还牛

引言

MongoDB 8.0已经推出有一段时间了,相比之前的版本推出的新功能,8.0版本的新功能集中在提升性能和可维护性上面,可以说是目前性能最好的一个版本。

具体来说,按照官方说法通过基准测试工具YCSB (通用数据库基准测试工具)验证,MongoDB 8.0展现出显著的性能提升。 相较于7.0版本,‌写入密集型场景‌(YCSB 批量写入测试)速度提升最高达‌54%‌‌ 。 ‌读取性能‌方面,纯读场景(100%读取)提升‌27%‌ ,混合读写场景(95%读 + 5%写)提升25%‌‌ 。 其他场景测试中,Linkbench性能提升18%‌ ,时序数据场景(TSBS)更实现60%‌ 的加速‌。

降级限流新功能

MongoDB 8.0本人认为比较牛逼的功能是提供了setQuerySettings 新命令, setQuerySettings命令可以为不同的查询模式做一些定制,其中一个功能是"拒绝查询 ",这个功能的场景是我们的数据库有时候会遇到失控的慢查询或异常线程,设想运行过程中发现一个没命中索引的查询语句,消耗了大量资源,作为DBA你要怎么做? 第一想法肯定是要Kill掉造成问题的查询语句来缓解问题,但这并不足够,因为不断会有新的同样的查询语句涌进来,直到应用方重新修改查询语句并上线来停止这个查询,或者创建合适的索引来解决了问题,显然前者依赖应用方重新上线新查询语句,不是短时间能够完成的工作。

而且前者 (改语句) 没有彻底解决问题的情况下,大量资源消耗在慢查询上又会造成后者 (加索引) 难以完成,而且在整个完成过程当中系统的效率会变低,因为建索引本身也是一个消耗极大的任务,即使是使用background:true在后台运行。当然也有一些简单粗暴的方案,比如禁用登录用户、 修改表名、修改数据库实例的最大连接数、杀语句等等。

这些方案大部分都不够完美,或者说不够丝滑,基于这种情况,MongoDB 8.0提供了一个迅速拒绝某种查询模式的功能来暂时规避这种问题,所有符合查询模式或者queryHash的查询都会被直接拒绝,以此立即缓解线上问题。

这个功能通过setQuerySettings的reject实现。一点需要注意的情况是,这个配置只对新查询有效。如果一个慢查询已经在执行中,不会被立即杀掉,你仍然需要等它执行完,或人工kill掉语句。

查询语句拦截配置,通过queryShapeHash实现‌零代码改造的异常查询语句拦截‌‌

复制代码
db.adminCommand({
  setQuerySetting: 'xxxxxx',
  Settings: { Reject: true }
})

通过这个功能,就能很方便的实现数据库的降级限流,确实是非常方便。目前来看,即使是商业数据库也鲜有这种功能。

总结

MongoDB 8.0版本的宗旨在加强性能上,相较7.0版本,某些类型的查询和更新性能甚至提供了25%以上。 MongoDB 8.0相关的新功能还包括:时间序列增强功能、命令路径优化、使用tcmalloc内存碎片化大小减少18%、局定义读超时、持久化查询设置、高级分片功能、可查询加密增强功能等等。

本文版权归作者所有,未经作者同意不得转载。

相关推荐
csdn杰哥17 小时前
瑞萨单片机开发教程[二十七] DTC 外部中断触发传输实验
单片机·嵌入式硬件·mongodb·瑞萨·ra6m5
csdn杰哥20 小时前
瑞萨单片机开发教程[二十六] DMAC 存储器数据传输实验
单片机·嵌入式硬件·mongodb·瑞萨·ra6m5
铅笔小新z21 小时前
【stm32】GPIO
stm32·嵌入式硬件·mongodb
西门啐血2 天前
上位机开发之假装有设备,使用 C# 模拟串口设备
开发语言·mongodb·c#
吴声子夜歌2 天前
MongoDB 8.0——聚合
数据库·mongodb
吴声子夜歌3 天前
MongoDB 8.0——可视化管理工具
数据库·mongodb
吴声子夜歌3 天前
MongoDB 4.2——安装 MongoDB
数据库·mongodb
吴声子夜歌3 天前
MongoDB 8.0——MongoDB的安装
数据库·mongodb
吴声子夜歌4 天前
MongoDB 4.2——了解应用程序的动态
数据库·mongodb
czhaii4 天前
STC ai助手单片机工程项目创建实例
数据库·mongodb