加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

这场MongDB事故暴露的潜在危机,你是否也正在忽视?

发布时间:2019-01-02 22:28:55 所属栏目:MySql教程 来源:张开威
导读:副标题#e# 一、MongoDB特性 MongoDB是一个可扩展的高性能基于文档的NoSQL数据库,具备但不限于以下特性: 无数据结构限制和高性能 MongoDB以文档结构的存储方式,能够更便捷的获取数据; MongoDB没有表结构的概念,每条记录可以有完全不同的结构,业务开发

存储引擎配置数据压缩

  •  MongoDB在使用WiredTiger和encrypted引擎时默认开启了压缩,压缩比约为70%--80%;
  •  MongoDB WiredTiger默认使用Snappy,该选项消耗较低的CPU资源获得较高的压缩率,此外提供zlib选项,该选项比Snappy拥有更高的压缩率,但会消耗更多的CPU资源。

设置合理的Path

  •  如条件允许,将数据和索引目录分开,每个目录挂在不同的硬盘设备,将数据和目录存放到不同的物理设备。
  •  启用directoryPerDB,每个数据库不同目录,每个目录挂在不同的设备。

设置合理的oplogsize

  •  设置足够的oplog大小,确保足够的同步/维护时间窗口,避免因oplogsize太小导致同步中断。

启用安全认证

  •  启用安全认证会降低MongoDB性能,出于安全考虑,任然建议开启安全认证,除非MongoDB运行在安全的网络环境之内。

选择合适的片键

  •  片键的选择对于分片集群的性能至关重要,合理的片键可以提高MongoDB整体性能,糟糕的片键可能会让你的MongoDB集群不如单机MongoDB。

好的片键应当具有以下特征:

  •  将插入数据均匀分布到各个分片上;
  •  保证CRUD操作能够利用局部性;
  •  有足够的粒度进行块拆分;
  •  片键上必须有索引,因此选择业务会用到的索引字段分片,好处是可以避免索引浪费,减少空间和性能损失。

善用索引

  •  如果没有索引MongoDB需要把所有的Document从盘上读到内存,这会对MongoDB服务器造成较大的压力并影响到其他请求的执行。
  •  同时,应当根据业务选择合适的索引属性,比如可以利用TTL自动删除过期的数据。

避免索引滥用

  •  不依赖于每个字段的独立索引,合适的组合索引相比于每个字段创建索引占用存储空间更小且同样能提升效率,但需要注意组合索引字段顺序及排序问题。

监控profile

  •  开启mongodb的profile对该实例的操作进行监控,,为性能优化提供依据;

启用Log Rotation

  •  MongoDB默认情况下不会自动的切换日志的,这将会导致日志逐渐增大,在繁忙的业务下,日志增长快。查看某一时段的日志极不方便。需要对MongoDB日志文件进行切换,根据实际需求保留若干天。

程序合理配置驱动

  •  程序应根据MongoDB架构和业务需求配置驱动程序,从而实现读写分离、故障转移等。 

【编辑推荐】

  1. 12月数据库榜单,整体排名稳定如昨,Oracle 分数接连下降
  2. 黑客攻击数据库的六大手段
  3. 2018年12月全球数据库排行榜:Oracle惨不忍睹!
  4. 记一次生产数据库"意外"重启的经历
  5. ERP技术全接触:数据库、编程和前端技术
【责任编辑:庞桂玉 TEL:(010)68476606】
点赞 0

(编辑:云计算网_泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读