惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

U
Unit 42
A
About on SuperTechFans
J
Java Code Geeks
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Stack Overflow Blog
Stack Overflow Blog
Recent Announcements
Recent Announcements
GbyAI
GbyAI
F
Fortinet All Blogs
Blog — PlanetScale
Blog — PlanetScale
MongoDB | Blog
MongoDB | Blog
MyScale Blog
MyScale Blog
aimingoo的专栏
aimingoo的专栏
H
Help Net Security
月光博客
月光博客
博客园 - Franky
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Apple Machine Learning Research
Apple Machine Learning Research
The Cloudflare Blog
WordPress大学
WordPress大学
S
SegmentFault 最新的问题
T
Tailwind CSS Blog
Jina AI
Jina AI
有赞技术团队
有赞技术团队
博客园_首页

博客园 - 桦仔

预算有限只能用 SQL Server 标准版?3 套高可用方案,2 台机器就能落地 SQL Server 2025 新功能概览分享 对齐规则太 “苛刻”,PostgreSQL表变大的 3 个核心原因 SQL Server 2025数据库引擎新特性汇总 并发控制机制大揭秘:解析SQL Server与PostgreSQL的并发控制策略 SQL Server 2025中解决“写写阻塞”的利器 揭开SQL Server和PostgreSQL填充因子的神秘面纱 为什么PostgreSQL不自动缓存执行计划?这可能是最硬核的优化解读 为何PostgreSQL没有聚集索引?解读两大数据库的设计差异 SQL Server 2025 中的改进 MySQL下200GB大表备份,利用传输表空间解决停服发版表备份问题 理解PostgreSQL和SQL Server中的文本数据类型 深度对比:PostgreSQL 和 SQL Server 在统计信息维护中的关键差异 只需简单5步,Ansible脚本自动搭建AlwaysOn集群(已测试通过,可实际运行) 五分钟搞定!Linux平台上用Ansible自动化部署SQL Server AlwaysOn集群 一分钟搞定!CentOS 7.9上用Ansible自动化部署SQL Server 2019 SQL Server 2022新功能:将数据库备份到S3兼容的对象存储 从DNS配置到Pacemaker部署:一步步教你在Linux平台上实现AlwaysOn集群 低成本高可用方案!Linux系统下SQL Server数据库镜像配置全流程详解 从 $PGDATA 到文件组:深入解析 PostgreSQL 与 SQL Server 的存储策略
MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
桦仔 · 2025-03-03 · via 博客园 - 桦仔

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%、局定义读超时、持久化查询设置、高级分片功能、可查询加密增强功能等等。

 

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